首先来看一段函数
#include <stdio.h>
int main()
{
int a[3][2] = {1,2,3,4,5,6};//定义二维数组
int i,j;
printf("a的地址:%p\n",a);
for(i = 0; i < 3; i++)
{
printf("a[%d]的地址:%p\n", i, a[i]);
}
for(i = 0; i < 3; i++)
{
for (j = 0; j < 2; j++)
printf("a[%d][%d]的地址:%p\n", i, j, &a[i][j]);
}
return 0;
}
执行结果
小结
二维数组可以看成是 数组名为 a ,元素为a[0]、a[1]、a[2] 的数组
a[0]、a[1]、a[2] 是普通的一维数组
其中:
a[0] 存的是a[0][0]的地址
a[1] 存的是a[1][0]的地址
a[2] 存的是a[2][0]的地址
a[0]+1 就变成了a[0][1]的地址
a[1]+1 就变成了a[1][1]的地址
a[2]+1 就变成了a[2][1]的地址
a 存的是a[0]的地址
a+1 就变成了a[1]的地址
a+2 就变成了a[2]的地址
&a + 1就跨越了整个数组的宽度