123bb 发表于 2021-1-29 15:53:30

数组指针和二维数组

int a={{1,2,3},{4,5,6}};
int (*p)=a;
这里的数组指针为什么能指向二维数组,不应该是int (*p)=a;吗?
而且这个数组指针指向二维数组时不用加取值符了?

kishere 发表于 2021-1-29 16:45:17

p也是一个指针, a在定义数组的时候, a也会变成指向该数组首元素的指针, 所以p = a 相当于指针之间的赋值. 当然是合法的

2736946915 发表于 2021-1-29 17:02:32

a里面存放的本来就是a的地址,你可以把数组也当成一个指针来看,然后通过[][]这两个来偏移,实现访问或者修改数据,第一次把a当成地址,第一个[]当成偏移,第二次是把a[]当成地址,第二个[]当成偏移
                     p-------------> {1,2,3} =    a   {a ,a , a }
                     p-------------> {4,5,6} =    a   {a ,a , a }
                     p-------------> {7,8,9} =    a   {a ,a , a }
         

李京 发表于 2021-1-29 20:00:44

不一样
int(*p)=&a;才是规范的写法,这里的&a是a的地址
int(*p)=a;是不规范的写法,
这里用的是a的值,就是(&a),你这是就可以把a的值,当作一维数组的地址,
怎么指向一维数组,是不是
int(*p)=&a;
这里你把a当作数组名,是不是就和一维数组一样了
而且为什么是int(*p),因为a是有3个元素的一维数组
页: [1]
查看完整版本: 数组指针和二维数组