发 帖  
[问答] *(a+1)+2表示1行2列元素a[1][2]的地址,怎么看出来呢?
2018-7-7 18:03:55  353 STM32
收藏 2 收藏 推荐 0 推荐
分享
问个基础问题
*(a+1)+2表示1行2列元素a[1][2]的地址,怎么看出来呢?
我不明白*(a+1)+2为什么表示的是地址.

*(a+1)+2
*(a+1)其中a表示整个数组首地址,指向对象是行,所以a+1表示第二行首地址就是a[1]
而*(a+1)就表示a[1],这个我知道.

我的疑问是a+1既然是第二行首址,*(a+1)为什么不能看成第二行内容.
2018-7-7 18:03:55   评论 邀请回答
2个回答
a[n]==*(a+n)

a+1确实是第二行的首址,但第二行存的也是地址。
a[x],a本身是地址,*(a+1)是内容
a[x][y],a是地址,a[1](同*(a+1))也是地址。

PS:记得在一篇文章里看过,曾在C语言盘古开天地之时,世间本无a[n]这种东西,只有*(a+n),后来为了方便,同时也方便编译器发现一种叫做“内存越界”的猥琐bug,才加上了a[n]这种语法。
2018-7-8 22:11:40 评论

举报

这里好像要看*号,在C里除了乘号的意思外,还有好像就是地址指针的意思
2018-7-8 22:58:29 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

提问题
关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表