C经典指针习题.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C经典指针习题

指针 本章重要知识点: 1. 一个变量的地址称为该变量的指针。 指针变量定义的一般形式为: 类型标识符 *变量名 int *i_point; 2. * 在定义语句中只表示变量的类型是指针,没有任何计算意义。 * 在语句中表示“指向”。表示“地址”。 3. 指针变量只能存放地址,不要将非地址数据赋给指针变量。 int *p; p=100; 4. ++, - -, * 优先级相同,都是右结合性。 int a=3, *p; p=a; (1)(*p)++; 相当于a++。表达式为3, a=4 (2)*p++; *(p++)首先*p ,然后p=p+1,指针指向下一个int单元 表达式为3, (3)++*p ++(*p) *p=*p+1 a=4 (4)*++p *(++p),首先:p=p+1, 然后取*p。即取p所指的下一个int单元的内容。 5. 指针变量作为函数参数 (1)函数的参数可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。 (2)指针变量作为函数参数与变量本身作函数参数不同,变量作函数参数传递的是具体值,而指针作函数参数传递的是内存的地址。 (3)用指针变量作函数参数,在被调函数的执行过程中,应使指针变量所指向的参数值发生变化,这样,函数在调用结束后,其变化值才能保留回主调函数。 (4)函数调用不能改变实参指针变量的值,但可以改变实参指针变量所指向变量的值。 (5)用指针变量作函数参数,可以得到多个变化了的值。 注意:如果函数的形参是指针类型,那么实参传递过去的一定是地址(二级上机改错题必考类型) 6. 数组的指针和指向数组的指针变量 数组名就是数组的起始地址;又规定:数组的指针就是数组的起始地址。数组元素的指针就是数组元素的地址。 (1)指向数组元素的指针变量的定义与赋值 int a[10], *p; p=a; (2) p+1指向数组的下一个元素,而不是下一个字节 7. 数组名作函数参数(重点,难点) (1) 数组名可以作函数的实参和形参,传递的是数组的地址。这样,实参、形参共同指向同一段内存单元,内存单元中的数据发生变化,这种变化会反应到主调函数内。 (2) 在函数调用时,形参数组并没有另外开辟新的存储单元,而是以实参数组的首地址作为形参数组的首地址。这样形参数组的元素值发生了变化也就使实参数组的元素值发生了变化。 8. 指向二维数组的指针和指针变量 int a[3][4]; (1) a为二维数组名,a+1为a[1]的地址,也就是数组第一行的地址,所以a为行指针。a为行指针,加1移动一行。 (2) a[1]为一维数组名,a[1]+1为a[1][1]的地址,也就是数组第一行第一列的地址, 所以a[1]为列指针。 (3) *a或a[0]为列指针,加1移动一列 (4) a, a+0 , *(a+0), a[0], a[0][0]表示的都是二维数组的首地址。 (5) 注意二维数组的各种表示法,a为常量。*(a+i)与a[i]等价 9 指向由m个整数组成的一维数组的指针变量,int (*p)[m]; 注意,p为行指针,可以直接将二维数组名a赋给p。这样,a与p等同。如有a[n][m],可以令p=a; 10. 字符串的指针和指向字符串的指针变量 (1) char string[ ]=“I love China”;(合法,string为数组名,代表数组的首地址,是常量。) (2) char string[20]; string=I love China;(非法表示,常量不能赋值) 正确的写法:strcpy(string, I love China); (3) 用字符指针表示字符串 char *string=“I love China”;(合法,将内存中字符串常量的首地址赋给一个指针变量) 另一种写法:char *string; string=“I love China”;(指针变量赋值,合法) 第3种写法:char *string; gets(string);(非法,指针未赋值就作指向运算) 11. 函数的指针和指向函数的指针变量 (1)函数在编译时被分配给一个入口地址。这个入口地址就称为函数的地址,也是函数的指针。像数组一样,C语言规定,函数名就代表函数的入口地址 (2) 专门存放函数地址的指针变量称为指向函数的指针变量 函数类型 (*指针变量名)(参数类型 ); int (*p)( int, int); int max (

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档