C指针总结

取内容* 从右至左

取地址& 从右至左

同类型指针变量关系运算是有意义的。

指针变量和数组名都表示数组的地址,但是数组名是地址常量。

*p++(*p)++不同。*p++的赋值结果跟*p相同,p最后的结果是p+1;(*p)++的结果是p所指内存中的内容自加。

Int (*p)[4]表示指向包含4个元素的一维数组的指针,一维数组元素为整型。Int *p[4]表示指针数组。p[i][j]还可以用*(*(p+i)+j)表示。

char *s = “abcde”, s指向为”abcde”分配的常量内存地址。

指针变量作为形参,实参可以是变量地址、指针变量、数组名。

数组名作为形参,实参可以是数组名或指针变量。

C语言中规定,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。指向函数的指针变量称为”函数指针变量”或”函数指针”。如:int(*pf)(int a,int b);

函数指针的作用:1)使用函数指针调用函数 2)实现函数指针作为参数的功能

要求函数指针的特征与所调用的函数特征一致,即返回类型、形参类型和个数。

函数指针的性质与数据指针性质相同。不同的是数据指针指向内存的数据区,而函数指针指向内存的程序代码区。函数指针进行算术运算无意义。

指向指针的指针是一个二级指针,跟一级指针是两种不同类型的数据,不可互相赋值,尽管值都是地址。

指向结构体的指针习惯采用->访问结构体变量中的成员。也可以(*p).data,括号是必须的,因为"*"的优先级低于".",去掉括号变成*(p.data),意义不对。

原文地址:https://www.cnblogs.com/chengsheng/p/5616551.html