在c编程中怎样定义可以动态申请内存的数组?

来源:百度知道 编辑:UC知道 时间:2024/06/30 09:37:51
定义数组的时候
通常为
int a[100];
那么,如果当我需要的数组大小需要在函数体中得到
例如
void main()
{
int n;
n=count(1);/*count为已经定义的函数*/
}
此时n为我需要的数组大小,该怎么处理?
如果直接定义为
int a[];
又表示什么?

一般的“短命”(运行后很快就结束)程序就不要考虑自动分配大小,如果你要编写长期运行的程序那就一定要考虑这些了。

所谓动态大小的数组,实际上是用指针来实现的,我们只需要定义:
int *a;
int n,i;
获取需要的大小之后,比如:
scanf("%d",&n);
申请需要的内存空间:
a=malloc(n*sizeof(int));
这以后就可以使用数组a[0]~a[n-1]了,比如:
for (i=0;i<n;i++) scanf("%d",&a[i]);