数组指针和二维数组
int a={{1,2,3},{4,5,6}};int (*p)=a;
这里的数组指针为什么能指向二维数组,不应该是int (*p)=a;吗?
而且这个数组指针指向二维数组时不用加取值符了? p也是一个指针, a在定义数组的时候, a也会变成指向该数组首元素的指针, 所以p = a 相当于指针之间的赋值. 当然是合法的 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 }
不一样
int(*p)=&a;才是规范的写法,这里的&a是a的地址
int(*p)=a;是不规范的写法,
这里用的是a的值,就是(&a),你这是就可以把a的值,当作一维数组的地址,
怎么指向一维数组,是不是
int(*p)=&a;
这里你把a当作数组名,是不是就和一维数组一样了
而且为什么是int(*p),因为a是有3个元素的一维数组
页:
[1]