指针数组(int *a[])和数组指针 (int (*a)[])
1.对指针有关的表达式阅读遵循的规则是“从右到左、由近到远、括号优先”。
int *a[10] 从字符a开始,右侧是[10],表示a 为一个包含10个元素的数组,左侧为指针标记,表示这个数组中保存的事指针,再左边是int 表示所有的指针指向整型数据。
int (*a)[10] 从字符a开始,括号优先,表示a是一个指针,右侧为[10]表示指针指向一个数组,左侧是int ,表示指针指向的数组为整型数组。
辅助记忆:
int *a[10]类比
1. int* a 等价于 int *a;
2. int a[10] 从字符a开始,右侧是[10],表示a 为一个包含10个元素的数组,左侧是 int 表示数组元素是整型的。
则int *a[10]等价于int* a[10], 从字符a开始,右侧是[10],表示a 为一个包含10个元素的数组,左侧是 int* 表示数组元素为整型指针。
int (*a)[10] :
则int (*a)[10] 首先知道这个表达式是一个数组,指针符号被括号括了进去,是为了和int* 区分,说明最终的数组元素为整型的,
*a表示指针,也就是同时定义了一个指针 和一个整型数组。结合在一起就是定义了指针指向定义的整型数组
想不到其他的好的方法去解释了,第二个辅助记忆方法有点牵强,不过只要记忆住第一个,第二个也就自然记住了。