#include <stdlib.h>
int main()
{
int num,*p=0,i
printf("输入数组元素个数:")
/*输入数组元素个数,保存到变量num中*/
scanf("%d",&num)
p = (int *)malloc(sizeof(int)*num)
/*输入数据*/
for(i=0i<numi++)
{
scanf("%d",&p[i])
}
/*输出数据*/
for(i=0i<numi++)
{
printf("%d ",p[i])
}
/*删除动态创建的数组*/
free(p)
return 0
}
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个元素的空间。
C语言定义动态数组需要用到动态内存分配函数,参考代码如下:#include<stdio.h>
#include<stdlib.h>
int
main()
{
int
*a=NULL,n,i
scanf("%d",&n)
a=(int
*)malloc(n*sizeof(int))
for(i=0i<n++i)
a[i]=i
for(i=0
i<n
++i)
printf("%d
",a[i])
free(a)
a=NULL
return
0
}