sizeof
- это ключевое слово, потому что, несмотря на его название и использование, оно является оператором подобно +
или =
или <
, а не функцией подобно printf()
или atoi()
или fgets()
. Многие люди забывают (или просто не знают), что sizeof
на самом деле является оператором и всегда разрешается во время компиляции, а не во время выполнения.
Для языка C не требуется size_t
, чтобы быть пригодным для использования и согласованным языком. Это только часть стандартной библиотеки. Язык Си нуждается во всех операторах. Если бы вместо +
C использовал ключевое слово plus
для добавления чисел, вы бы сделали его оператором.
Кроме того, я делаю полу-неявное преобразование от size_t
с до unsigned int
с (и регулярно int
с, но Керниган и Ричи когда-нибудь меня за это поразят) все время. Вы можете присвоить тип возвращаемого значения sizeof
для int, если хотите, но в своей работе я обычно просто передаю его прямо в malloc()
или что-то в этом роде.