发布网友
共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啦