c中的动态数组初始化

时间:2013-07-05 06:10:28

标签: c dynamic-memory-allocation

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

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

这是在c中创建动态数组的方法之一。现在我想将此数组初始化为0,如此

int arr[n] = {0};

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

2 个答案:

答案 0 :(得分:7)

  

我们可以这样做吗?

没有。但你可以这样做:

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

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

答案 1 :(得分:0)

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

你做不到。如果要为数组分配内存,请使用malloccalloc函数。