若有定义:int a[2][3];,则以下对a数组元素地址的正确表示为______?

若有定义:inta[2][3];,则以下对a数组元素地址的正确表示为______。A*(a+1)B*(a[1]+2)Ca[1]+3Da[0][0]... 若有定义:int a[2][3];,则以下对a数组元素地址的正确表示为______。
A *(a+1)
B *(a[1]+2)
C a[1]+3
D a[0][0]
展开
 我来答
iiiiiiiipl
2019-09-21 · TA获得超过9923个赞
知道答主
回答量:68
采纳率:66%
帮助的人:3.8万
展开全部

*(*(a+i)+j) 。

a是二维数组名,也是二维数组0行的首地址。a[0]是第一个一维数组的数组名和首地址*(a+0)或*a是与a[0]等效的,它表示一维数组a[0]0号元素的首地址。&a[0][0]是二维数组a的0行0列元素首地址。

同理,a+1是二维数组1行的首地址,由此可得出:a+i,a[i],*(a+i),&a[i][0]是等同的。此外,&a[i]和a[i]也是等同的。

另外,a[0]也可以看成是a[0]+0是一维数组a[0]的0号元素的首地址,而a[0]+1则是a[0]的1号元素首地址,由此可得出a[i]+j则是一维数组a[i]的j号元素首地址,它等于&a[i][j]。

由a[i]=*(a+i)得a[i]+j=*(a+i)+j,由于*(a+i)+j是二维数组a的i行j列元素的首地址。因此,该元素的值等于*(*(a+i)+j)。

扩展资料:

两个地方要注意: 

1、在程序声明变量的时候的*,只是表明“它是一个无符号整数,这个整数指向某个内存地址,一次访问sizeof(type)长度”。这点不要和(*)操作符混淆;

在C++程序声明变量的时候的&,只是表明“它是一个引用,这个引用声明时不开辟新空间,它在内存分配表加入新的一行,该行内存地址等于和调用时传入的对应参数内存地址”。

这点不要和(*)声明符,(&)操作符混淆。

参考资料:

百度百科-数组指针

百度百科-指针

百度网友dd0ce36
2019-09-20 · TA获得超过407个赞
知道答主
回答量:959
采纳率:29%
帮助的人:88.9万
展开全部
元素地址的正确表示
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式