在c语言的运行时间内确定大小的数组?

时间:2012-06-02 09:26:19

标签: c arrays variables runtime user-input

我想创建一个数组,其大小将在运行时确定,即用户输入。

我试着这样做:

printf("enter the size of array \n");

scanf("%d",&n);

int a[n];

但这导致了错误。

如何设置这样的数组大小?

2 个答案:

答案 0 :(得分:2)

除非您使用的是C99(或更新版本),否则您需要手动分配内存,例如:使用calloc()

int *a = calloc(n, sizeof(int)); // allocate memory for n ints
// here you can use a[i] for any 0 <= i < n
free(a); // release the memory

如果你有一个符合C99标准的编译器,例如使用--std=c99的GCC,您的代码可以正常运行:

> cat dynarray.c
#include <stdio.h>
int main() {
        printf("enter the size of array \n");
        int n, i;
        scanf("%d",&n);
        int a[n];
        for(i = 0; i < n; i++) a[i] = 1337;
        for(i = 0; i < n; i++) printf("%d ", a[i]);
}
> gcc --std=c99 -o dynarray dynarray.c
> ./dynarray
enter the size of array
2
1337 1337 

答案 1 :(得分:0)

您需要添加stdio.h,声明n并将代码放入函数中。除此之外,你所做的事情应该有效。

#include <stdio.h>

int main(void)
{
        int n;
        printf("enter the size of array \n");
        scanf("%d",&n);
        int a[n];
}