Confusión sobre el hecho de que el puntero no inicializado apunta a cualquier parte

#include <stdio.h>

int main(void)
{
    int *ptr;
    printf("%p", ptr); // Error: uninitialized local variable 'ptr' used
                       // Output is "0"
}

Estoy leyendoC-FAQ sobre puntero nulo. Y dice que el puntero no inicializado puede apuntar a cualquier parte. ¿Eso significa que apunta a una ubicación aleatoria en la memoria? Además, si esta afirmación es verdadera, ¿por qué se produce un error si intentoprintf("%p",ptr)? Desde puntero no inicializadoptr apunta a alguna ubicación aleatoria, ¡parece que debe imprimir esta ubicación aleatoria!

Respuestas a la pregunta(1)

Su respuesta a la pregunta