.已知有声明"int a[3][3]={0},*p1=a[1],(*p2)[3]=a;",以下表达式中与"a[1][1]=1"不等价的表达式是29. A.*(p1+1)=1 B.p1[1][1]=1 C.*(*(p2+1)+1)=1 D.p2[1][1]=1请给出理由谢谢
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/20 10:52:14
![.已知有声明](/uploads/image/z/13886787-3-7.jpg?t=%EF%BC%8E%E5%B7%B2%E7%9F%A5%E6%9C%89%E5%A3%B0%E6%98%8E%22int+a%5B3%5D%5B3%5D%3D%7B0%7D%2C%2Ap1%3Da%5B1%5D%2C%28%2Ap2%29%5B3%5D%3Da%3B%22%2C%E4%BB%A5%E4%B8%8B%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%B8%AD%E4%B8%8E%22a%5B1%5D%5B1%5D%3D1%22%E4%B8%8D%E7%AD%89%E4%BB%B7%E7%9A%84%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%98%AF29.++A%EF%BC%8E%2A%28p1%2B1%29%3D1++++B%EF%BC%8Ep1%5B1%5D%5B1%5D%3D1+++C%EF%BC%8E%2A%28%2A%28p2%2B1%29%2B1%29%3D1++++D%EF%BC%8Ep2%5B1%5D%5B1%5D%3D1%E8%AF%B7%E7%BB%99%E5%87%BA%E7%90%86%E7%94%B1%E8%B0%A2%E8%B0%A2)
.已知有声明"int a[3][3]={0},*p1=a[1],(*p2)[3]=a;",以下表达式中与"a[1][1]=1"不等价的表达式是29. A.*(p1+1)=1 B.p1[1][1]=1 C.*(*(p2+1)+1)=1 D.p2[1][1]=1请给出理由谢谢
.已知有声明"int a[3][3]={0},*p1=a[1],(*p2)[3]=a;",以下表达式中与"a[1][1]=1"不等价的表达式是29.
A.*(p1+1)=1 B.p1[1][1]=1 C.*(*(p2+1)+1)=1 D.p2[1][1]=1
请给出理由谢谢
.已知有声明"int a[3][3]={0},*p1=a[1],(*p2)[3]=a;",以下表达式中与"a[1][1]=1"不等价的表达式是29. A.*(p1+1)=1 B.p1[1][1]=1 C.*(*(p2+1)+1)=1 D.p2[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]
这样就可以理解了.