1
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,但值没有改变。我要做的就是将所有这些设置为零,以便我可以将其用作计数器。谢谢!

4

1 回答 1

2

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

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

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

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

 int n = 0;
 for(; n < i ; ++n)
    array[n] = n; 
于 2014-06-05T03:07:11.853 回答