C语言中如何通过一个内存块的首地址,把一个内存块当成二维数组使用?

发布网友

我来回答

4个回答

热心网友

你说的问题似乎是用malloc动态分配出来一块内存,然后你想把这块内存当成2维数组使
其实2维数组在内存中也是线性排列的,只不过我们平常的平面写法有助于分析
这样就可以正常向其内写入数据,比如a[2][3] 你可以先定义几个指针变量分别指向每一行的首地址,a00 a01 a02 这三个是第一行的 定义int *p1; 并使p1指向a02 后边的单元 p1 = p + 3
依此类推
然后用这几个指针来实现二维控制。

热心网友

#include<stdio.h>
#include <stdlib.h>
main()
{
int *p;
int (*q)[3]; '指向具有3个int元素的指针,即二维数组的“行指针”
int i,j;
p=(int *)malloc(sizeof(int)*6); '开辟6个int数据所需要的内存空间
for(i=0;i<=6;i++)
p[i]=i+1; 'p可以当成一维数组看待
q=(int (*)[3])p; 'q可以当成二维数组看待
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
printf("%3d",q[i][j]);
printf("\n");
}
}

热心网友

是一个内存块

热心网友

二楼回答ok啦

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com