跪求:哪位学姐学哥帮我解读以下两个代码:a是一个二维数组,*(a+i)[j]和 *(a+3*i+j)这两个程序段怎么理解?

我是初学者,望能说得详细点哦!... 我是初学者,望能说得详细点哦! 展开
 我来答
burkwen
2011-07-15 · TA获得超过2525个赞
知道大有可为答主
回答量:1104
采纳率:100%
帮助的人:788万
展开全部
本来不想答的,因为想深了自己也不太清楚,怕误导了楼主。可是1楼答错了,还是纠正一下吧。
*(a+i)[j] 不是a[i][j],根据优先级,[]和()都排在*的前面,所以实际上本式等价于下式:
*( (a+i)[j] ) 经测试,这个式子等于 *a[i+j] == a[i+j][0],不知道为什么。
a[i][j]其实等价于 ( *(a+i) )[j],恰恰是优先级的问题,造成了1楼的失误。

*(a+3*i+j) 等价于a[3*i+j],没有问题,因为a是二维数组,所以a[3*i+j]是一个一维数组,形象地看,就是二维数组的第(3*i+j)行,注意头一行是第0行。

楼主掌握一个公式:p[i] == *(p + i)就行了,最多就是正着用、反着用,再嵌套着用。
lyqf365
2011-07-15 · TA获得超过1186个赞
知道小有建树答主
回答量:1291
采纳率:100%
帮助的人:874万
展开全部
建议去看下运算符优选级 数组和指针的关系相关内容。
*(a+i)[j] 是 a[i][j]
*(a+3*i+j) 就是 a[3*i+j]的意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式