A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
为什么是**a==1而不是*a==1?
a的值等于第一行的首地址,而第一行的首地址不是等于&a[0][0]吗?那*a不就等于a[0][0]吗?那为什么是**a才等于a[0][0]。

2 个回复

倒序浏览
a是二维数组,二维数组的数组名作为指针变量名的时候指代的是一维数组的地址,而不是元素的地址。而一维数组的数组名做指针变量名的时候指向的才是一维数组中元素的首地址。一维数组的地址和元素地址自然不是一回事
回复 使用道具 举报
你可以用一维数组的思想来考虑二维数组

可以把二维数组看做特殊的一维数组
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
所以一维数组
int a[3]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
所以:
*a是“一维数组”的内容:{1,3,5,7}
因为这是int型的一维数组,所以应该取出的内容是 “值”才对,现在取出的内容又是一个一维数组
所以只能理解为这一次取得内容是一维数组{1,3,5,7}的地址。<这一点要理解>
所以再给“一维数组{1,3,5,7}”进行一次' * '运算,这次表示取“一维数组{1,3,5,7}”中的内容
所以
**a就等于1。

如果不是很懂可以看看我总结的,由于内容太多就不适合复制到这里了
http://blog.csdn.net/zjqx_w/article/details/46910257


回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马