PDA

Visualizza la versione completa : [C++] Stampa di un puntatore


Frank88
01-11-2011, 17:56
Salve ragazzi,

Avrei bisogno di un chiarimento sull'uso dei puntatori.
Devo stampare il campo puntatore a intero formato int* num_km di una struct però con la seguente sintassi pirntf("%d",n->num_km) il compilatore mi da warning ovviamente perchè sto passando un campo puntatore quando viene richiesto di stampare un intero standard(%d),qualcuno saprebbe delucidarmi in merito alla sintassi da utilizzare?

Grazie a tutti.

MItaly
01-11-2011, 18:12
Ma tu vuoi stampare l'indirizzo contenuto nel puntatore oppure il valore a cui punta? Nel primo caso usa la stringa di formato "%p", nel secondo ti basta dereferenziare il puntatore con l'operatore *.

Frank88
01-11-2011, 18:21
Si d'accordo però a questo punto la sintassi come diventa?Perchè num_km rimane sempre il campo di una struct questo vuol dire che dovrei scrivere printf("%d",n->*num_km),in questo caso mi da errore,qual è la sintassi corretta?non mi serve il %p,nn ho bisogno distampare il codice esadecimale.

ramy89
01-11-2011, 18:35
printf("%d\n",*n->num_km);

L' operatore -> ha la precedenza sull' operatore * , per cui se chiami *n->num_km stai chiamando il valore a cui punta n->num, se scrivessi (*n)->num_km sarebbe un errore perchè (*n) non sarebbe più un puntatore.

Frank88
01-11-2011, 18:59
Perfetto,Grazie 1000!! :unz:

Loading