三 二维数组取址

int a[2][3]={1,2,3,4,5,6}
问:
(1)a[1][1]=?
(2)*(a[1]+1)=?
(3)**(a+1)=?
(4)(*(a+1)[1])=?


答:计算机是“行优先”,a[2][3]就是
0 1 2
a[0] 1 2 3
a[1] 4 5 6
(1)∴ a[1][1]=5

(2)可以将数组a看做由2个一维数组构成
m[3]={1,2,3} 
n[3]={4,5,6}。
a[1][0] 等价于 n[0]。
∴a[1] 等价于 n
*(a[1]+1)=*(n+1)=5

(3) 注意a+1与&a+1的区别:
a+1是“行跳变”,&a+1是“数组跳变”。
1 2 3 4 5 6 未知
a,&a a+1 &a+1
*(a+1) 等价于a[1]
∴**(a+1)=a[1][0]=4

(4)(*(a+1))[1]=a[1][1]=5。

posted @ 2020-02-04 11:16  wuqi1003  阅读(223)  评论(0编辑  收藏  举报