C语言之指针数组和数组指针

写在前面:指针数组数组指针在平时本身用的就不算太多,但偶尔项目中用到的时候会一阵迷糊,所以这里先把这两种关系写下来,后续遇到问题的时候,有依据可查。

正文:

1、先明确一个C语言运算符的优先级关系:()>[ ]> *;

2、然后再来看: int (* p)[ 5]; 根据优先级,先看( )内,p是一个指针,理解到这里,即不管p后面怎么样,p就是一个指针,后面的

[ ]又说明了 p是一个什么样的指针呢,p是一个指向数组的指针,然后再加上前面的int,所以最后,p是一个指向 int 类型的数组的一个指针。所以这种格式叫 数组指针。

3、 再来看: int *p[ 5]:  根据优先级,先看[ ],p是一个数组,后面不管怎么样,p就是一个数组,再结合 *,数组里面是什么元素呢,数组里面的元素是指针,再加上int, p是一个数组,数组中的元素全是int类型的指针。这种格式就叫 数组指针,也可以写成:int *(p[ 5 ]);

4、数组指针实战:

5、 指针数组实战:

指针数组还有一个很重要的用处就是用来指向 二维数组的第一维,为什么呢?因为指针数组的本质是数组,数组中的元素是指针类型,而二维数组中的第一维是一维数组的首地址,类型匹配可以用指针类型指向。

猜你喜欢

转载自blog.csdn.net/weixin_40204595/article/details/81567988