例:int *p[10]
这是一个指针数组,即一个长度大小为10,每个元素都是指针的数组,实质是数组。
例:int (*p)[10]
这是一个数组指针,即一个指针指向了一个长度为10的数组,实质是指针。
安利一个在一些复杂场合,不用画图,不用过多思考的方法。
有一个万能分析法,能解决百分之九十九的定义判断。
1:看变量,以变量为中心,遵循先看右边再看左边,括号()优先。
2:先判断出来的则是本质。数组指针,可理解为数组的指针,本质则是指针。数组指针指针数组函数(有点夸张),本质是函数,所以尾语即为本质,按照判断出来的顺序,越先判断出来的越靠近尾语。
有点抽象,例子说明。
例:char *p[10][22]
分析:先看变量p,看右边是一个二维数组,即实质是一个二维数组,再看左边是一个char *的指针,即二维数组里存的是char *型指针。即 p是一个指针二维数组。
例:int (*buf4[2])[3]
分析:先找到变量buf4,先看括号,括号buf4右边是数组,本质是一个数组,再看左边是一个指针,则括号里是指针数组,括号整体右边是一个数组,即buf4是一个数组的指针数组。