我想创建一个数组,其大小将在运行时确定,即用户输入。
我试着这样做:
printf("enter the size of array \n");
scanf("%d",&n);
int a[n];
但这导致了错误。
如何设置这样的数组大小?
答案 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];
}