¿Cuál es el comportamiento del especificador de conversión `p` con el puntero` NULL`?

Me pregunto si hace:

void *ptr = NULL;
printf("%p\n", ptr);

Will siempre da(nil) ¿salida?

¿Depende de la implementación de la biblioteca estándar o es una especificación estándar de C99?