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

来源:百度知道 编辑:UC知道 时间:2024/06/30 07:30:08
如果我不知道这个数组究竟有多少个元素,比如a[m][n],m和n的值都是不知道的,我要怎么定义这个数组?怎么用malloc给它分配空间?
请给出代码给我参考~谢谢!

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个元素的空间。

/*
这是一维数组,二维数组类似
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]);
}