多谢楼主分享!之前对于这种问题总是模糊,现在运用你的先右后左思想来看待这类问题,感觉好多了!
int* (*(*(*p)[10])(int))(int,int);//p 是一个指针,该指针指向大小为 [10] 的数组并且数组的每个元素都是函数指针,这些指针指向一个函数,函数接收一个 int 的变量,这个函数返回一个函数指针,该指针又指向一个函数,该函数接收两个 int 变量,并且返回一个指向 int 型变量的指针。
个人分析:先从标示符(*(*(*p)[10])(int))开始,p是一个指针,(*p)的右边是[10],说明p指向的是一个含有10个元素的数组,(*p)的左边*,说明p所
指向的这个数组的数组元素都是一个指针,然后(*(*p)[10])的右边是(int),说明数组元素的指针指向的是一个函数,该函数的参数为int,(*
(*p)[10])的左边是*,说明指向的函数的返回值是一个指针;接着(*(*(*p)[10])(int))的右边是(int,int),说明p指向的数组的数组元素指向的函
数的返回指针指向一个函数,该函数接收两个int参数,并且返回int*指针。所以p是一个数组指针,指向的数组的数组元素是一个函数指针,函数
指针指向的函数返回一个函数指针,该函数带2个int参数,返回int*。
int* (*(*(*p)[10])(int))(int,int);//p 是一个指针,该指针指向大小为 [10] 的数组并且数组的每个元素都是函数指针,这些指针指向一个函数,函数接收一个 int 的变量,这个函数返回一个函数指针,该指针又指向一个函数,该函数接收两个 int 变量,并且返回一个指向 int 型变量的指针。
个人分析:先从标示符(*(*(*p)[10])(int))开始,p是一个指针,(*p)的右边是[10],说明p指向的是一个含有10个元素的数组,(*p)的左边*,说明p所
指向的这个数组的数组元素都是一个指针,然后(*(*p)[10])的右边是(int),说明数组元素的指针指向的是一个函数,该函数的参数为int,(*
(*p)[10])的左边是*,说明指向的函数的返回值是一个指针;接着(*(*(*p)[10])(int))的右边是(int,int),说明p指向的数组的数组元素指向的函
数的返回指针指向一个函数,该函数接收两个int参数,并且返回int*指针。所以p是一个数组指针,指向的数组的数组元素是一个函数指针,函数
指针指向的函数返回一个函数指针,该函数带2个int参数,返回int*。