复杂的函数指针分析过程
作者:互联网
具体解析过程
int p;
定义普通变量p
int *p;
定义一个指向int变量的指针p
int p[3];
定义一个含有三个元素的数组p
int *p[3];
[]优先级比*高,因此p先与[]结合,说明p首先是个数组,
然后再与*结合,说明数组中的元素是指针,
然后再与int结合,说明该指针指向的类型是int。
int (*p)[3];
()的优先级最高,因此p先与*结合,说明p首先是个指针,
然后再与[]结合,说明指针指向的内容是数组,
然后在与int结合,说明数组中的元素为int。
int **p;
p与最近的*结合,说明p首先是个指针A,
然后再与*结合,说明该指针指向的内容也是一个指针B,
然后再与int结合,说明指针B指向的内容为变量int。
int p(int);
p与()结合,说明p首先是个函数,
然后再与int结合,说明函数的返回值是int变量。
int (*p)(int);
()的优先级最高,因此p先与*结合,说明p首先是个指针,
然后再与()结合,说明该指针指向的内容是函数,
再与括号里面的int结合,说明该函数的参数有一个int,
再与前面的int结合,说明该函数的返回值为int。
int *(*p(int))[3];
()的优先级最高,因此p先与()结合,说明p首先是个函数,
再与括号内的int结合,说明函数的参数为一个int,
再与p前面的*结合,说明函数的返回值为一个指针A,
再与后面的[]结合,说明该指针A指向的内容是一个数组,
再与第一个*结合,说明数组里面的元素是指针B,
再与前面的int结合,说明指针B指向的内容是一个int。
int (*(*p)(int))(int);
()的优先级最高,因此p先与*结合,说明p首先是个指针A,
再与后面()结合,说明该指针A指向的内容是一个函数A,
再与括号中的int结合,说明该函数的参数是一个int,
再与(*p)前面的*结合,说明该函数的返回值是一个指针B,
再与最后面的()结合,说明该指针B指向的内容提要是一个函数B,
再与括号中的int结合,说明该函数B的参数是一个int,
再与前面的int结合,说明函数B的返回值为int。
标签:分析,函数,指向,复杂,int,说明,结合,函数指针,指针 来源: https://www.cnblogs.com/zhongyong211223/p/15724933.html