右左法则:从声明的变量开始,先向右看,再向左看,再向右看,再向左看 。。。
如果向右看的时候遇到“)”,则一直向左看,直到遇到“(”跳出这层括号。然后再重复向右看,向左看。
有一个很不错的面试题可以拿来当一个例子:
a) 一个整型数
int a;
b)一个指向整型数的指针( A pointer to an integer)
int *a;
c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an integer)
int **a;
d)一个有10个整型数的数组( An array of 10 integers)
int a[10];
e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers)
int *a[10];
f) 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers)
int (*a)[10];
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)
int (*a)(int);
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )
int (*a[10])(int);
基本上上面的如果全都能用右左法则分析出来,那么一般的复杂申明就没问题啦!