Вопрос: Понимание неопределенного размера «void»
В программировании на C ключевое слово «void» означает отсутствие типа. Возникает вопрос: каков размер "void"?
Ответ:
Тип "void" не имеет определенного размера в C. Это не допустимый тип для объектов или указателей, поэтому попытка использовать его как таковой приведет к ошибке компиляции. В частности, оператор:
void n;
недействителен, поскольку он пытается объявить переменную типа void, что недопустимо.
Расширение: Выделение и арифметика указателей с указателями «void»
Хотя «void» не имеет размера, его можно использовать как тип для указатели. Однако такие указатели не указывают на какой-либо конкретный тип или размер данных.
Утверждение:
void *p = malloc(sizeof(void));
results в ошибке времени компиляции, поскольку попытка выделить память для типа «void» бессмысленна. Функция malloc требует допустимого типа данных для выделения памяти.
В GCC выражение sizeof(void) неожиданно оценивается как 1. Хотя может показаться, что оно присваивает размер «void», это просто деталь реализации, на которую не следует полагаться.
Кроме того, арифметика указателя p для «void» указателя не определена и не должна использоваться. Это связано с тем, что тип данных, на которые указывает p, неизвестен, что делает невозможным определить, что будет означать увеличение указателя.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3