中易网

求教动态二维数组怎么定义和操作

答案:1  悬赏:20  
解决时间 2021-02-17 22:00
求教动态二维数组怎么定义和操作
最佳答案
两种方法:
1.转化为一维数组申请
2.先申请全部行首指针,再按行逐行申请

1.
a=(int *)malloc(sizeof(int),(unsigned)m*n);
使用的时候就和一般的二维数组一样。
举个例子给你:
#include "stdlib.h"
#include "stdio.h"
#include

int main()
{
int i,j;
int n;//这个就是需要指定的行数
int (*p)[10];

scanf("%d",&n);//取得行数

//动态生成二维数组,指定列数为10,如果想改,自己该里面
的参数,如果想定义n行2列就为: p=(int (*)[2])malloc(n*2*sizeof(int));
p=(int (*)[10])malloc(n*10*sizeof(int)); //动态申请n行10列的二维数组

for(i=0;ifor(j=0;j<10;j++)
p[i][j]=i*j;

for(i=0;i{
for(j=0;j<10;j++)
printf("%d,",p[i][j]);

printf("\n");
}
free(p);

return 0;
}

2.
这个也给你举个例子吧:
#include
#include
main()
{
int i = 0;
int j = 0;
int line = 0;
int row = 0;
int **p = NULL;

printf("input the line of the array:\n");
scanf("%d", &line);
printf("input the row of the array:\n");
scanf("%d", &row);

p = (int **)malloc(sizeof(int *) * line);
if (NULL == p)
{
return;
}
for (i = 0; i < line; i++)
{
*(p + i) = (int *)malloc(sizeof(int) * row);
if (NULL == *(p + i))
{
return;
}
}

for (i = 0; i < line; i++)
{
for(j = 0; j < row; j++)
{
p[i][j] = i + 1;
}
}

for (i = 0; i < line; i++)
{
for(j = 0; j < row; j++)
{
printf("%d", p[i][j]);
}
}

for (i = 0; i < line; i++)
{
free(*(p + i));
p[i] = NULL;
}

free(p);
p = NULL;
}

第一种方法数组创建和释放都比较简单
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
十分之三 九分之二 十五分之四 怎么通分
优派VA1916W显示器使用默认1440*900分辨率,
汤姆索亚历险记 1到7章的主要内容
肉块的做法步骤图,青椒炒肉块怎么做好吃
想创业心里没底正常吗
我的c语言作业编译后总是被360当作木马给隔离
罗威纳犬黑背那个好
制衣工厂制衣流程?
艳阳天停车场(果园路93号附近艳阳天停车场)地
化妆品包装盒是放可以印刷二维码上去
桶装矿泉水,烧开喝好些,还是喝冷的好些!
GT540M的physx驱动
2014款中东版霸道 9气囊2气囊如何区分的最新
一个处境和自己差不多惨的人称对方为什么
淘金山怎么去啊,我要去那办事
推荐资讯
西安人说的“这松”是什么意思?有骂人的意思
游戏《新神雕侠侣》里面战斗画面里的“合”是
求cs1.5雪地DUST2
求大师帮我BB取个名字 姓陶 2008年8月22号14
我梦见在特别特别黑的山里,我送两个小女孩回
盟军敢死队3为什么屏幕上敌人显示不出来,是
威海伊克莱斯环保设备有限公司怎么去啊,有知
冒风洞地址在哪,我要去那里办事
夜店之王车强化多少级
车轮的重心在哪里??高手来解答以下``
新加坡有哪些好玩的地方
监利县程集机关幼儿园地址有知道的么?有点事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?