怎么实现C语言里面数组的动态分配?

如果我不知道这个数组究竟有多少个元素,比如a[m][n],m和n的值都是不知道的,我要怎么定义这个数组?怎么用malloc给它分配空间?请给出代码给我参考~谢谢!... 如果我不知道这个数组究竟有多少个元素,比如a[m][n],m和n的值都是不知道的,我要怎么定义这个数组?怎么用malloc给它分配空间?
请给出代码给我参考~谢谢!
展开
 我来答
风若远去何人留
2015-12-02 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部
1 定义指针。
2 使用malloc函数分配内存。
3 对数组进行访问即可。

对于一维动态数组,直接定义一维指针,并分配内存空间即可。
比如int类型的10个元素动态数组,写作
int *a;
a = (int *)malloc(sizeof(int) * 10);

如果是多维数组,需要从高维向低维逐层分配。如二维数组10*100空间。
int **a;
int i;
a = (int **) malloc(sizeof(int *) * 10); // 先分配10个int*的空间。
for(i = 0; i < 100; i ++)
a[i] = (int *)malloc(sizeof(int) * 100); // 对于每个int*,分配100个元素的空间。
希茜Cqa68
2009-05-14 · TA获得超过1238个赞
知道小有建树答主
回答量:860
采纳率:0%
帮助的人:1074万
展开全部
/*
这是一维数组,二维数组类似
int **p= (int**)malloc(m*sizeof(int*) );
int i ;
for(i = 0; i < m; i++)
{
p[i] = (int*)malloc(n*sizeof(int));
}

vc6.0中通过
*/
#include <stdio.h>
#include <malloc.h>

void main()
{
int a=0;
int i=0;
int *p;

printf("输入数组的大小:");
scanf("%d",&a);
p=(int*)malloc(a*sizeof(int));

for(i=0;i<a;i++)
{
printf("p[%d]:",i);
scanf("%d",&p[i]);
}
printf("\n");
for(i=0;i<a;i++)
{
printf("p[%d]=%d\n",i,p[i]);
}
printf("\n");

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanfustudio
2009-05-14 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3763万
展开全部
#include<malloc.h>

int **a = (int**)malloc(sizeof(int*) *m);
int i ;
for(i = 0; i < m; i++)
{
a[i] = (int*)malloc(sizeof(int) *n);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chichujn
2009-05-14 · TA获得超过663个赞
知道小有建树答主
回答量:1534
采纳率:50%
帮助的人:1106万
展开全部
全都malloc不free?有你们的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式