注册 登录
编程论坛 C++教室

二维数组指针的问题

a14290719 发布于 2011-11-26 12:59, 618 次点击
int a[3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}};
   int (*p)[4]=a;//这个知道
   p=&a[2];//这是啥意思
   int p[4]=a;//p[4]啥意思
2 回复
#2
cosam2011-11-26 15:24
http://colinhouyuejun.blog.
#3
ttkx8882011-11-26 16:43
回复 楼主 a14290719
一,p=&a[2];// 相当于把把把a[2][0]的地址赋值给了(*p) 也就是等于(*p)=&(a[2][0])相当于第数组a第三行的首地址交给了*p来保存,(*p)[0]处的数值就等于a[2][0]处的数值了。

二,int p[4]=a;//p[4] 相当于定义了一个整形数组P 他有四个元素p[0] p[1] p[2] p[3],同时把数组a的首地址赋值给指针P 相当于&(p[0])=&(a[0][0])
  
 你可以把int (*p)[4]=a; 看作成以下代码你就懂了

  int b;
 *p=&b;
int(*p)[4]也就=int b[4],*p只是=于一个四字节的地址,(*p)[0]等于数组A的第一个元素,同理(*p)[1]就等于数组A的第二个元素了
1