1.左右法则:首先从最里面的圆括号看起,然后往右看,再往左看。每当遇到圆括号时,就应该调转阅读方向。一旦解析完圆括号里的内容,就跳出圆括号。重复这个过程直到整个声明解析完毕。
2.左右法则是用来理解复杂的声明的。
3.左右法则的例子
int *a[10];
a是一个整型指针数组
int(*a)[10];
a是一个数组指针变量
int(*a)(int);
a是一个函数指针变量,指向的是形参为int,返回值为int的函数
int(*a[10])(int);
a是一个函数指针数组,该数组里的元素指向形参为int,返回值为int的函数
int*(*(*fp1)(int))[10];
fp1是一个函数指针变量,指向的是形参为int,返回值为数组指针,该指针指向整型指针数组
int *( *( *arr[5])())();
arr是一个函数指针数组,该数组里的元素指向一个形参为空,返回值为函数指针,该指针指向一个形参为空,返回值int*的函数
float ( * ( *b()) [] )();
b是一个函数,该函数形参为空,返回值为数组指针,该指针指向一个函数指针数组,数组的元素指向一个形参为空,返回值位float的函数。
void * ( *c) ( char a, int (*b)());
C是一个函数指针变量,指向一个有两个参数的返回值为void*的函数,第一个形参为char,第二个形参为函数指针,该指针指向一个形参为空,返回值
为int的函数。
float ( * ( * e[10]) (int *) ) [5];
e是一个函数指针数组,数组里元素指向一个形参位int*,返回值为数组指针,指向的数组为float型数组。