char (*(*x())[])();
这道题来自”The C Programming Language”中的一个例子。
首先,确定标识符:x
x是一个函数,没有参数:x()
返回值是一个指针:*x()
这个指针指向一个数组:(*x())[]
数组中的每个元素是指针:*(*x())[]
指向一个不带参数的函数:(*(*x())[])()
函数的返回值是char:char (*(*x())[])()
这里,要知道*、()和[]的优先级。
int (*ff(int))(int*,int);
要理解该声明的含义,首先观察
ff(int)
将ff声明为一个函数,它带有一个int型的型参,该函数返回int(*)(int*,it);它是一个指向函数的指针,所指向的函数返回int型兵带有两个分别是int*型和int型的型参。