c++中怎么通过指向二维数组的指针给二维数组赋值
一、二维数组与二级指针
二维数组
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。二维数组的相当于由若干个一维数组组成的一级数组。
int a[3][4];
此时的a是一个二维数组,a[0]、a[1]、a[2]均表示一个一维数组,它们三个元素共同组成一个一维数组a(元素是一维数组)。也就是说二维数组a是由若干个一维数组元素(a[0]、a[1]、a[2])组成的一维数组。
int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}}
设数组a的首地址为1000,各下标变量的首地址及其值如图所示。
无论是一维数组还是二维数组,数组名均表示数组的首地址。
2. 二级指针
指向指针的指针称为二级指针,即二级指针不是指向一个普通变量,而是指向一个指针。如int **p,*p并不表示一个变量的值,而是另一个指针。
二、二级指针指向二维数组
int a[3][4];
此时的a即是一个二级指针,*a指向二维数组的首地址(也是a[0]的首地址),*(a+1)指向a[1]的首地址,*(a+2)指向a[2]的首地址。*(*(a+0) + 1)表示元素a[0][1],*(*(a+i)+j)表示元素a[i][j]。
三、应用举例
#include <stdio.h>
void main()
{
int a[3][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}};
for(int i=0; i<3; i++)
{
for(int j=0; j<4; j++)
{
printf("%4d", *(*(a + i) + j));
}
printf("\n");
}
}
四、运行测试
0 1 2 3
4 5 6 7
8 9 10 11