数组指针和指针数组的疑问?

来源:1-13 指针和二维数组

慕后端9087467

2022-08-25 13:34:32

int (*p)[3] = a

这里的p是不是一个变量相当于我们数学中理解的x?

https://img.mukewang.com/climg/6307060e091946a404320182.jpg

指针数组就是数组里面存的都是地址

数组指针是指把这个数组定义成指针类型?有点不太理解


如上图一维数组的a:int *

二维数组的b: int(*)[2]

int * 和 int(*)是不是都是数组指针?

是不是只代表一个的地址的时候就是int *,如果是多个就是int (*)[数组长度]?


下面我的理解是否正确?

上面的b就是指的b数组的第一行,所以b的类型就是int(*)[2]

b[0]是指b[0][0] 就是指的第一行第一个,所以是单个就是int *

&b是指最外层的整个的所以就是int (*)[3][2]



写回答

1回答

山行老师

2022-08-26

1)指针数组就是数组里面存的都是地址【理解正确】,数组指针是指向数组的指针;

2)int * p是普通指针,int *p[n]是指针数组, int(*p)[n]是数组指针,这么说清楚了吧;

3)你的理解正误情况如下:

    1>上面的b就是指的b数组的第一行,所以b的类型就是int(*)[2];//完全正确.

    2> b[0]是指b[0][0] 的地址,就是指向第一行第一个元素,所以只能用int *去接受二维数组的b[n];

    3> &b是指最外层的整个的所以就是int (*)[3][2]; //完全正确



0

物联网/嵌入式工程师

面向零基础保姆式教学+简历指导+1V1模拟面试+3次内推,助力轻松就业!

394 学习 · 1207 问题

查看课程