二维数组取地址问题

pearl55 2007-05-05 02:42:24
二维数组举例


#include"iostream.h"
void main()
{
int array2[2][3]={{11,12,13},{21,22,23}};
for(int i=0;i<2;i++)
{
cout<<*(array2+i)<<endl;
for(int j=0;j<3;j++)
{
cout<<*(*(array2+i)+j)<<"";
}
cout<<endl;
}
}


这道题中,有两点不明白,
cout<<*(array2+i)<<endl;
cout<<*(*(array2+i)+j)<<"";
在这两个输出语句中,*为一元操作符,是取对象的值的,可是在第一个输出语句中,得到的却是地址,这个用处怎么理解呢?请大家指点啊。
...全文
820 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pearl55 2007-05-05
  • 打赏
  • 举报
回复
谢谢大家哦,这道题有点明白了
renzaijiang 2007-05-05
  • 打赏
  • 举报
回复

*(array2+i) 等价与&array2[0]+i 即第i行首元素i是offset(横向偏移量)
wdz609 2007-05-05
  • 打赏
  • 举报
回复
可以这样理解,你怎么使用二维指针,就怎么使用二维数组名,但二维数组名却并不等同于二维指针。
blackmurder 2007-05-05
  • 打赏
  • 举报
回复
2维数组是由N个1维数组构成的,所以使用一次*以后得到的是1维数组的地址
roger4733 2007-05-05
  • 打赏
  • 举报
回复
第一句中,array2是指向二维数组,所以array2实际上是int型的二维指针,加i以后还是二维指针,使用一次*操作符以后当然就是实际数组中的元素的地址了。

65,183

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧