目录
一.回顾
二.思考
三.实验验证
四.视频教程
一.回顾
在一维数组中,一维数组的数组名就是一维数组中首个元素的地址。若有int a[5];int *p;则p=&a[0]可以简写成p=a;
在C语言中,二维数组如int a[2][2]={1,2,3,4};可以按照下面的表格来理解。
列0 | 列1 | |
行0 | a[0][0]=1 | a[0][1]=2 |
行1 | a[1][0]=3 | a[1][1]=4 |
但是在内存中的存贮则是
所以二维数组又叫数组的数组,本质上还是一维数组。因为二维数组中的一行可以看作是一个一维数组,而这个一维数组的数组名是a[0]和a[1]。
二.思考
通过上面的概念可知,二维数组a[i][j]中的a[i]可以看作是二维数组a[i][j]中的第i行的数组名。
又因为二维数组中的一行可以看作是一个一维数组,这个一维数组的数组名是a[i],那a[i]就是第i行中的第0个元素(a[i][0])的地址。所以二维数组中每个元素的地址就可以这样表示。
所以a[i]+j就是二维数组a[i][j]的地址。
三.实验验证
#include <stdio.h>
int main(void)
{
int a[2][2]={0,1,2,3};
int i = 0;
int j = 0;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("a[%d][%d] addr is %p,value is %d\n",i,j,a[i]+j,*(a[i]+j));
}
}
return 0;
}
运行结果:
四.视频教程
61.指针和二维数组(1)_哔哩哔哩_bilibili