manpage говорит о memset
:
#include <string.h> void *memset(void *s, int c, size_t n)
Функция
memset()
заполняет первуюn
байты области памяти, на которую указываетs
, с константным байтомc
.
Очевидно, что memset
не может использоваться для инициализации массива int
, как показано ниже:
int a[10];
memset(a, 1, sizeof(a));
это потому, что int
представляется 4 байтами (скажем), и невозможно получить желаемое значение для целых чисел в массиве a
.
Но я часто вижу, что программисты используют memset
для установки элементов массива int
либо 0
, либо -1
.
int a[10];
int b[10];
memset(a, 0, sizeof(a));
memset(b, -1, sizeof(b));
В соответствии с моим пониманием инициализация с помощью integer 0
является ОК, потому что 0
может быть представлена в 1 байт (может быть, я ошибаюсь в этом контексте). Но как можно инициализировать b
с помощью -1
(значение 4 байта)?