O & * N, ULL está bem definido em C?

Em que versão (s) dos padrões C (se houver) é a seguinte bem definida?

void foo(void) {
    char *nullPtr = NULL;
    &*nullPtr;
}

Observe que não estou atribuindo o resultado a nada - a segunda linha é uma declaração simples.

estedevemos seja uma pergunta com uma resposta óbvia, mas (como parece acontecer com muita frequência nessas perguntas), ouvi muitas pessoas dizerem que a resposta é "obviamente indefinida" como "obviamente definida".

Em uma nota bastante relacionada, o que dizer do seguinte? Devemosfoo produzir uma leitura de c?

extern volatile char c;

void bar(void) {
    volatile char *nonnullptr = &c;
    &*nonnullptr;
}

(Versão C ++ da mesma pergunta:O & * NULL está bem definido em C ++?)

questionAnswers(1)

yourAnswerToTheQuestion