我如何声明一个可变长度数组并将其初始化为零?

问题描述 投票:0回答:2
int n;
scanf("%d",&n);
int arr[n];
arr[n]={0};

我想将所有元素初始化为0。

在编译时,我在第4行的位置8出现错误“预期表达式”。

我进行了搜索,但没有找到执行此操作的方法。

c arrays
2个回答
4
投票
您可以改用memset

memset(arr, 0, sizeof arr);

或者,您可以使用固定大小的数组(例如int arr[25] = {0};)或动态分配的数组(例如使用零初始化的calloc)。


0
投票
arr[n]={0};

您需要(假定自动变量)

在定义上(假设n是一个常数表达式):

int arr[n] = {0,};

或定义后

memset(arr, 0, n * sizeof(*arr));

for(size_t i = 0; i < n; i++) arr[i] = 0;

如果n是一个常数表达式,并且arr具有静态存储持续时间(是全局存储或具有静态关键字before,则您无需执行任何操作

© www.soinside.com 2019 - 2024. All rights reserved.