2012-05-05 6 views
12

mi chiedo se fa:Qual è il comportamento dello specificatore di conversione `p` con il puntatore` NULL`?

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

Will dà sempre (nil) uscita?

Dipende dall'implementazione della libreria standard oppure è una specifica C99 standard?

+5

Penso che lo standard non definisca quale sia l'output di printf per il formato '% p'. Spetta alla realizzazione. –

+0

Riprendo questa domanda perché le risposte sono sbagliate. Questo è un problema per una domanda di ~ 5000 punti di vista. – Stargateur

+0

@Stargateur: sulla strada per il badge del negromante? – chqrlie

risposta

18

Sul mio sistema produce (null) quindi suppongo che sia stata definita l'implementazione. Più in generale, tutto ciò che %p stampe è definito dall'implementazione:

7.21.6.1

L'argomento deve essere un puntatore a void. Il valore del puntatore è convertito in una sequenza di caratteri di stampa, in un modo definito dall'implementazione .

5

Fornisce sempre (zero)?

Niente affatto. Sulla mia macchina (Mac con i686-apple-darwin11-llvm-gcc-4.2) stampa 0x0.

Problemi correlati