Инициализация массива переменной длины в ноль
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;