Какая версия стандартов С (если таковая имеется) является следующей четко определенной?
void foo(void) {
char *nullPtr = NULL;
&*nullPtr;
}
Обратите внимание, что я не присваиваю результат чему-либо - вторая строка - это простой оператор.
Это должен быть вопрос с очевидным ответом, но (как это часто случается слишком часто по таким вопросам), я слышал, как многие люди говорят, что ответ "явно не определен" как "явно определенный".
Что относительно следующего примечания, как насчет следующего? Должен ли foo
производить чтение c?
extern volatile char c;
void bar(void) {
volatile char *nonnullptr = &c;
&*nonnullptr;
}
(C++ версия того же вопроса: Is & * NULL четко определен в C++?)