.已知有声明"int a[3][3]={0},*p1=a[1],(*p2)[3]=a;",以下表达式中与"a[1][1]

1个回答

  • 二维数组是一维数组的数组,其在内存中存储的时候,按行优先的顺序存储,而a[0] a[1] a[2]

    表示每行的元素首地址

    a[1]表示a[1]所在行的地址,此时a[1]相当于一维数组,其元素也就是 a[1][0] a[1][1] a[1][2] 三个元素的一维数组.

    你可以将a[1]看成一维数组b,则其元素也就是b[0] b[1] b[2]

    而 p1 = b 则p1[1] = b[1] = a[1][1] = 1 这也是A为什么正确的原因.

    至于c和d,(*p2)[3]=a 相当于 p2[0] = a[0] p2[1] = a[1] p2[2] = a[2]

    这样就可以理解了.