0

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

我试着这样做:

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

scanf("%d",&n);

int a[n];

但这导致了一个错误。

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

4

2 回答 2

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 的编译器,例如带有 GCC 的 GCC --std=c99,那么您的代码可以正常工作:

> 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 
于 2012-06-02T09:27:59.587 回答
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];
}
于 2012-06-02T09:31:16.650 回答