2016-05-31 3 views
0

Мне нужно установить все значения массива равными единице. Я пытался сделать это, используя следующий код:memset() не устанавливает значения vales в один

int bulbSwitch(int n) { 
    int bulbs[n]; 
    memset(bulbs, 1, n * sizeof(int)); 
    ... 

Однако, отладчик показывает, что все значения в массиве фактически установлены 16843009. Без memset значение массива, казалось бы, случайные, положительные целые числа. Почему это и как я могу это исправить?

ответ

3

memset устанавливает каждый байт памяти указанному вами значению. На вашей платформе int явно 4 байта. Таким образом, вы настраиваете каждый байт int быть 1.

То есть, для каждого int, код эффективно делает:

bulbs[i] = 0x01010101; 

Это значение в десятичной системе счисления точно 16843009.

Это означает, что вы не должны использовать memset, а простой цикл, чтобы установить каждый элемент массива.

 Смежные вопросы

  • Нет связанных вопросов^_^