0

根据C99标准,我们可以做到这一点

int n = 0;
scanf("%d",&n);
int arr[n];

这是在 c 中创建动态数组的方法之一。现在我想把这个数组初始化成0这样

int arr[n] = {0};

这里我的编译器产生错误。我想知道我们可以这样做吗?是否符合标准?在编译时我们为数组提供了足够的内存,但这里在编译时是未知的。它是如何发生的?

4

2 回答 2

7

我们可以这样做吗?

不,但你可以这样做:

int arr[n];
memset(arr, 0, sizeof(arr));

你失去了初始化的语法糖,但你得到了功能。    

于 2013-07-05T06:17:32.387 回答
0
int n = 0;
scanf("%d",&n);
int arr[n];

你不能这样做。如果要为数组分配内存,请使用mallocorcalloc函数。

于 2013-07-05T06:25:01.827 回答