将可变长度数组初始化为零

时间:2014-06-05 02:46:00

标签: c initialization variable-length-array

int x = 750;
int i = 0;

while (pow(2, i) < x) {
    i++;
}
printf("i is currently %d\n", i);

int array[i];

while (i > 0){
    i--;
    printf("The value of array %d is %d\n", i, array[i]);
}

当我这样做时,它会产生一些非常疯狂的价值观。我听说尝试使用malloc或memset,但价值观并没有改变。我想要做的就是将所有这些设置为零,以便我可以将它用作计数器。谢谢!

1 个答案:

答案 0 :(得分:1)

您没有初始化数组值。它的内容是垃圾:array[i]printf的值未定义 - 可能是任何内容。

要将数组初始化为0,可以使用memset(由@WhozCraig评论,memset将数组的所有字节设置为给定值):

memset (array, 0, sizeof(array));

要编写其他内容,请编写for循环:

 int n = 0;
 for(; n < i ; ++n)
    array[n] = n; 
相关问题