Просто измените на memset (arr, -1, sizeof(arr));
Обратите внимание, что для других значений, кроме 0 и -1, это не будет работать , поскольку memset устанавливает значения байтов для блокапамяти, которая начинается с переменной, обозначенной *ptr
для следующих num
байтов.
void * memset ( void * ptr, int value, size_t num );
И поскольку int
представлен более чем в одном байте, вы не получите желаемого значения для целых чисел в вашем массиве.
Исключения:
- 0 является исключением, поскольку, если вы установите все байты равными 0, значение будет равно нулю
- -1 - еще одно исключение, так как Патрик выделил -10xff (= 255) в int8_t и 0xffffffff в int32_t
Причина, по которой вы получили:
arr[0] = -1
arr[1] = 255
arr[2] = 0
arr[3] = 0
arr[4] = 0
Причина в том, что в вашем случае длина int составляет 4 байта(32-битное представление), длина вашего массива в байтах составляет 20 (= 5 * 4), и вы устанавливаете только 5 байтов в -1 (= 255) вместо 20.