Это объясняется тем, что изначально в C не было типа void
. Вместо этого свою роль сыграл тип char
. И sizeof( char )
равно 1.
Например, я видел очень старый устаревший код, где было написано
memset( ( char * )p, 0, n );
, где аргумент p имеет тип int *
.
Похоже, это было сделано для обратной совместимости.