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
温馨提示:答案为网友推荐,仅供参考
相似回答