c++ 中 二维数组 及 指针 问题

int arr【3】【4】={1,2,3,4,5,6,7,8,9,10,11,12};
int (*ip)[4]=arr;
ip = &arr[2];

其中 “ int (*ip)[4]=arr; ”
这个里面的4又是代表什么意思啊?

第1个回答  2014-06-24
数组在内存中是连续按行分布的,对于a[2][3]={{1,2,3},{4,5,6}};它在内存中的分布式1,2,3,4,5,6;所以他等价于a[2][3]={1,2,3,4,5,6};在c/c++中,数组名也即是数组首地址,这里加入a=0x1000;那么它的地址分就是:1000,1004,1008,100c,1010,1014;&a[0][0]也就取第一个元素的地址,即1000,a[0]是第一行1000,1004,1008的首地址,也是1000,也即是a元素的首地址;同理*a也即是a[0],*(a+1)即是a[1],*(a+2)即是a[2];*a不能输出值是因为a是二维数组,某种程度是和二重指针一样的,所以输出的还是一个地址追问

谢谢你码字这么多,但是我还是想知道 这个4 是代表ip 的size 是 4 吗?
还有,int (*ip)[4]=arr;里,这个 等于arr ,是什么意思啊?

第2个回答  2014-06-24
ip是指向数组的指针,指向的数组长度为4本回答被提问者采纳
相似回答
大家正在搜