c++中怎么通过指向二维数组的指针给二维数组赋值

 我来答
老冯文库
2017-06-25 · 知道合伙人软件行家
老冯文库
知道合伙人软件行家
采纳数:1139 获赞数:8734

向TA提问 私信TA
展开全部

一、二维数组与二级指针

  1. 二维数组

二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。二维数组的相当于由若干个一维数组组成的一级数组。

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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式