资源描述:
《c++经典指针习题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、指针历年真题指针本章重要知识点:1.一个变量的地址称为该变量的指针。指针变量定义的一般形式为:类型标识符*变量名int*i_point;2.*在定义语句中只表示变量的类型是指针,没有任何计算意义。*在语句中表示“指向”。&表示“地址”。3.指针变量只能存放地址,不要将非地址数据赋给指针变量。int*p;p=100;4.++,--,*优先级相同,都是右结合性。inta=3,*p;p=&a;(1)(*p)++;相当于a++。表达式为3,a=4(2)*p++;*(p++)首先*p,然后p=p+1,指针指向下一个int单元表
2、达式为3,(3)++*p++(*p)*p=*p+1a=4(4)*++p*(++p),首先:p=p+1,然后取*p。即取p所指的下一个int单元的内容。5.指针变量作为函数参数(1)函数的参数可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。(2)指针变量作为函数参数与变量本身作函数参数不同,变量作函数参数传递的是具体值,而指针作函数参数传递的是内存的地址。(3)用指针变量作函数参数,在被调函数的执行过程中,应使指针变量所指向的参数值发生变化,这样,函数在调用结束后,其变化值才能保留回主调函数。(4)函数调
3、用不能改变实参指针变量的值,但可以改变实参指针变量所指向变量的值。(5)用指针变量作函数参数,可以得到多个变化了的值。注意:如果函数的形参是指针类型,那么实参传递过去的一定是地址(二级上机改错题必考类型)6.数组的指针和指向数组的指针变量数组名就是数组的起始地址;又规定:数组的指针就是数组的起始地址。数组元素的指针就是数组元素的地址。(1)指向数组元素的指针变量的定义与赋值inta[10],*p;p=a;(2)p+1指向数组的下一个元素,而不是下一个字节7.数组名作函数参数(重点,难点)(1)数组名可以作函数的实参和
4、形参,传递的是数组的地址。这样,实参、形参共同指向同一段内存单元,内存单元中的数据发生变化,这种变化会反应到主调函数内。(2)在函数调用时,形参数组并没有另外开辟新的存储单元,而是以实参数组的首地址作为形参数组的首地址。这样形参数组的元素值发生了变化也就使实参数组的元素值发生了变化。8.指向二维数组的指针和指针变量12指针历年真题inta[3][4];(1)a为二维数组名,a+1为a[1]的地址,也就是数组第一行的地址,所以a为行指针。a为行指针,加1移动一行。(2)a[1]为一维数组名,a[1]+1为a[1][1]
5、的地址,也就是数组第一行第一列的地址,所以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)charstring[]=“IloveChina”;(合
6、法,string为数组名,代表数组的首地址,是常量。)(2)charstring[20];string="IloveChina";(非法表示,常量不能赋值)正确的写法:strcpy(string,"IloveChina");(3)用字符指针表示字符串char*string=“IloveChina”;(合法,将内存中字符串常量的首地址赋给一个指针变量)另一种写法:char*string;string=“IloveChina”;(指针变量赋值,合法)第3种写法:char*string;gets(string);(非法,指
7、针未赋值就作指向运算)11.函数的指针和指向函数的指针变量(1)函数在编译时被分配给一个入口地址。这个入口地址就称为函数的地址,也是函数的指针。像数组一样,C语言规定,函数名就代表函数的入口地址(2)专门存放函数地址的指针变量称为指向函数的指针变量函数类型(*指针变量名)(参数类型);int(*p)(int,int);intmax(intx,inty){returnx>y?x:y;}p=max;(这时,指针变量p中放的是max函数在内存中的入口地址。)12.返回指针值的函数(1)被调函数返回的不是一个数据,而是一个地
8、址。所以函数的类型为指针类型。类型标识符*函数名(参数表)13.指针数组和指向指针的指针(1)指针数组中的每一个元素都是指针变量,可以放地址。类型标识*数组名[数组长度说明]int*p[4];p为数组名,内有四个元素,每个元素可以放一个int型数据的地址(2)指向指针的指针变量(或称为二级指针)inti,*p;p=&i;12指针历年真题同样,p