使用malloc()函数动态内存分配实现数组大小为变量
在C99
及以后,c语言中可以使用变量作为数组的长度,但不能对其初始化,即以下代码可以正常运行
#include<stdio.h>
int main()
{
int n=5;
int a[n];
int i;
for (i = 0; i < n; i++)
{
a[i]=i;
}
for (i = 0; i < n; i++)
{
printf("%d ",a[i]);
}
return 0;
}
在标准c语言ANSI C
,即C90
中,不允许使用变量作数组的长度,此时可以使用动态分配内存的方法实现变量定义数组长度,代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int number;
int *a;
int i;
printf("请输入数量:");
scanf("%d",&number);
a=malloc(number*sizeof(int));//申请内存
for (i = 0; i < number; i++)
{
a[i]=i;
}
for (i = 0; i < number; i++)
{
printf("%d ",a[i]);
}
free(a);//释放内存
return 0;
}
其中malloc()
函数可以向系统申请一块指定大小的内存,这里我们申请的大小为number
乘以此时int
型所占的内存,得到number
个int
所需要的内存空间,在代码执行完毕后,要记得使用free()
函数将申请的内存释放出去