我感觉一个也不对,应该是(a+i)+j或是(a[i])+j,是这样吗
若有定义int a[2][3],则对a数组的第i行第j元素地址正确引用的是,,A.*(a[i]+j) B.(a+J) C.*(a+j) D.a[i]+j
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
MarkHan_ 2023-02-19 20:53关注您的理解是正确的,如果要正确引用a数组的第i行第j个元素的地址,可以使用以下两种方法:
1、a[i] + j:首先通过a[i]访问到a数组的第i行,然后通过+j偏移j个元素的大小,即可得到第i行第j个元素的地址。
2、*(a + i) + j:首先通过a + i访问到a数组的第i行,然后用*(a + i)解引用获取第i行的首地址,再通过+j偏移j个元素的大小,即可得到第i行第j个元素的地址。
其中,第一种方法更加简洁明了,也更符合人的思维习惯;第二种方法则更加通用,可以方便地应用到二维数组和多维数组的访问中。
根据题目中的选项,其中选项A和C都不正确,因为A.*(a[i]+j)和C.(a+j)都使用了解引用运算符,但没有指定要解引用的指针是什么,因此无法得到正确的地址。选项B中的(a+J)只能获取到a数组的第j列的首地址,而无法获取到第i行的地址。选项D中的a[i]+j可以正确地获取到第i行第j个元素的地址。
评论 打赏 举报解决 3无用