È questo il codice qui sotto,
typedef NodoQ *PtrNodoQ;
PtrNodoQ ppio, fin;
lo stesso come questo?
NodoQ* ppio;
NodoQ* fin;
Sì, è conseguente esattamente gli stessi tipi di puntatore per ppio
e fin
.
Per quanto riguarda il tuo commento
"Non ho provato perché ho avuto la seconda opzione ovunque nel mio codice, e non volevo perdere un po 'di tempo ..."
si può facilmente verificare che:
void foo(PtrNodoQ p) {
}
void bar(NodoQ* p) {
foo(p);
}
e
void baz() {
NodoQ n;
foo(&n);
bar(&n);
}
compilazione tutto perfettamente bene, senza avvisi di conversione di tipo non validi o errori.
Inoltre si potrebbe avere trovato la risposta rapidamente this excellent reference (sottolineatura mia):
typedef-nomi sono alias per i tipi esistenti, e sono non dichiarazioni di nuovi tipi di. Typedef non può essere utilizzato per modificare il significato di un nome di tipo esistente (incluso un typedef-name). Una volta dichiarato, un nome typedef può essere redeclared per riferirsi nuovamente allo stesso tipo. I nomi typedef hanno effetto solo nello scope in cui sono visibili: diverse funzioni o dichiarazioni di classe possono definire tipi con nomi identici con significato diverso.
fonte
2015-04-23 21:32:46
Sì, sono uguali. –
Penso di sì, ma perché non chiedi al compilatore? –
Non ho provato perché ho ottenuto la seconda opzione in tutto il codice e non volevo perdere tempo ... quindi quando si utilizza typodef NodoQ * PtrNodoQ. PtrNodoQ diventa un alias di NodoQ * Immagino sia un modo per evitare il '*' e una migliore leggibilità ... grazie Michael e Mark – HoNgOuRu