我想创建一个数组,其大小将在运行时确定,即用户输入。
我试着这样做:
printf("enter the size of array \n");
scanf("%d",&n);
int a[n];
但这导致了一个错误。
如何设置这样的数组的大小?
我想创建一个数组,其大小将在运行时确定,即用户输入。
我试着这样做:
printf("enter the size of array \n");
scanf("%d",&n);
int a[n];
但这导致了一个错误。
如何设置这样的数组的大小?
除非您使用 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
您需要包含stdio.h
、声明n
并将代码放入函数中。除此之外,您所做的应该有效。
#include <stdio.h>
int main(void)
{
int n;
printf("enter the size of array \n");
scanf("%d",&n);
int a[n];
}