根据C99
标准我们可以做到这一点
int n = 0;
scanf("%d",&n);
int arr[n];
这是在c中创建动态数组的方法之一。现在我想将此数组初始化为0
,如此
int arr[n] = {0};
这里我的编译器产生错误。 我想知道我们可以这样做吗?它是按照标准吗?在编译时,我们为数组提供了足够的内存,但是在编译时它是未知的。它是如何发生的?
答案 0 :(得分:7)
我们可以这样做吗?
没有。但你可以这样做:
int arr[n];
memset(arr, 0, sizeof(arr));
你失去了初始化的语法糖,但你得到了功能。
答案 1 :(得分:0)
int n = 0;
scanf("%d",&n);
int arr[n];
你做不到。如果要为数组分配内存,请使用malloc
或calloc
函数。