m0_75007567 2023-02-19 20:37 采纳率: 66.7%
浏览 708

若有定义int a[2][3],则对a数组的第i行第j元素地址正确引用的是,,A.*(a[i]+j) B.(a+J) C.*(a+j) D.a[i]+j

我感觉一个也不对,应该是(a+i)+j或是(a[i])+j,是这样吗

  • 写回答

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个元素的地址。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月19日