指针数组(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表示指针,也就是同时定义了一个指针 和一个整型数组。结合在一起就是定义了指针指向定义的整型数组

 

 

想不到其他的好的方法去解释了,第二个辅助记忆方法有点牵强,不过只要记忆住第一个,第二个也就自然记住了。

 

posted on 2019-05-17 11:42  怀想天空2013  阅读(3815)  评论(0编辑  收藏  举报

导航