Sagiri12105 2023-02-05 22:34 采纳率: 71.4%
浏览 43
已结题

C语言 二维数组指针问题

设 int a[3][4]; ,则与元素a[0][0]不等价的表达形式是( )。
A.

 *a

B.

 **a

C.

*a[0]

D.

*(*(a+0)+0)

D太明显了,就是ABC不太懂,肯定是AB里选一个,但是我觉得A是等价的,不懂。求指点下ABC

  • 写回答

3条回答 默认 最新

  • 元气少女缘结神 2023-02-05 22:53
    关注

    这里* a 不等价,因为a是一个二维数组,可以想象成a是指向4个行指针的指针,对a取 * 相当于定位到了二维数组的第一行即等价于a[0],而非a[0][0]
    对于D你知道是等价的,而0与任何东西相加都可省略,即等于答案B,所以既然你知道D正确,那B也正确。
    对于C,因为a是二维数组,所以a[0]可以理解为拿到了第一行row=0的首地址,此时你理解成一维如tmp[]={1,2,3},那么* tmp就是取到了这个一维数组的第一个元素。相应的对于a[0]此时就相当于tmp,对其加 * 就相当于取到了第一行的第一个数,即C也正确

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月6日
  • 已采纳回答 2月6日
  • 修改了问题 2月5日
  • 创建了问题 2月5日