Инициализация массива переменной длины в ноль

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 ответ

Вы не инициализировали значения вашего массива. Его содержание является мусором: значения array[i] в вашем printf не определено - это может быть что угодно.

Чтобы инициализировать ваш массив в 0, вы можете использовать memset (как прокомментировал @WhozCraig, memset устанавливает все байты массива на заданное значение):

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

Чтобы написать что-то еще, напишите цикл for:

 int n = 0;
 for(; n < i ; ++n)
    array[n] = n; 
Другие вопросы по тегам