二维数组元素的地址
指针变量可以指向一维数组中的元素,当然也就可以指向二维数组中的元素,但是在概念和使用方法上,二维数组的指针比一维数组的指针复杂一些。要理解指针和二维数组的关系首先要记住一句话:
二维数组就是一维数组
如果理解不来这句话,那么你就无法理解指针和二维数组的关系。
int a[3][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
}
其中 a 是 二维数组名,a数组包含 3 行,即 3 个行元素,a[0], a[1], a[2],每个元素都可以看成含有 4 个元素的一维数组。而且 c 语言规定,a[0],a[1],a[2]分别是三个一维数组的数组名。
a[0],a[1],a[2]既然是一维数组名,一维数组的数组名表示就是数组第一个元素的地址,所以a[0]表示的元素a[0][0]的地址,即a[0] = &a[0][0];以此类推。
所以二维数组a[M][N]中,a[i]表示的就是元素a[i][0]地址,即a[2] = &a[2][0],所以