struct node
{
int coef;
int exp;
struct node *link;
};
typedef struct node *NODE;
risposta
Fa NODE
un typedef per un struct node *
.
quale sarebbe un modo migliore per scrivere questo codice ... mantenendo lo stesso significato. – Skr
Un modo migliore sarebbe quello di omettere il typedef e fare riferimento al tipo di puntatore come 'struct node *'. –
Definisce NODE
come sinonimo per il tipo di struct node *
, così quando sarai dichiarare una variabile di tipo NODE
sarete in realtà dichiarando un puntatore a struct node
.
Personalmente, non penso che tale dichiarazione sia una buona idea: stai "nascondendo un puntatore" (che è quasi sempre una cattiva idea), e, inoltre, non stai mettendo in evidenza questo fatto in alcun modo nel nuovo nome.
+1 per "Non nascondere i tipi di puntatore dietro un typedef" –
+1 per lo stesso motivo. Dargli il nome di 'nodeptr' invece di' node' sarebbe d'aiuto, ma poi non c'è alcun motivo per "digitarlo" del tutto. –
"Non nascondere i tipi di puntatore dietro un typedef" cosa intendi con questo – Skr
NODE
diventa uno pseudonimo per struct node*
.
EDIT: Okay, per il commento (se scrivo la mia risposta come commento, sarebbe troppo lungo e non formattato):
Non c'è modo diverso di scrivere questo. Qui, typedef
viene utilizzato solo per creare un sinonimo/alias per il puntatore a struct node
.
Un esempio per l'uso sarebbe:
void f()
{
// some code
NODE p = NULL;
// do something with p
// for example use malloc and so on
// like: p = malloc(sizeof(struct node));
// and access like: p->coef = ..; p->expr = ..
// do something with p and free the memory later (if malloc is used)
}
è lo stesso di
void f()
{
// some code
struct node* p = NULL;
// do something with p
}
Utilizzando NODE
rende solo più breve (in ogni caso, non vi consiglio come typedef
, come ti stai nascondendo, che è un puntatore , non un struct
o altro tipo, come menzionato nella risposta di @Matteo Italia).
Il formato, ti riferisci: "typedef struct {} formato nome_tipo" è un'altra cosa. È una specie di trucco in C
, per evitare di scrivere la parola chiave struct
(poiché è obbligatoria in C
e NON in C++
). Così
typedef struct node
{
//..
} NODE;
renderebbe NODE
alias per struct node
. Così, lo stesso esempio di sopra:
void f()
{
// some code
NODE p;
// do something with p
// note that now p is automatically allocated, it's real struct
// not a pointer. So you can access its members like:
// p.coef or p.expr, etc.
}
è lo stesso di
void f()
{
// some code
struct node p;
// do something with p
}
NOTA che ora, p
è NON un puntatore, è struct node
.
cosa indica
typedef struct node *NODE
?
IT INDICA una persona che non ha imparato che MAIUSCOLO non va bene
Reserve maiuscolo identificatori per MACRO.
Acclamazioni & hth.,
Inoltre, non penso sia una buona idea lasciare che 'NODE' contenga' * ' –
@ PeterLee: Grazie, non ho pensato di menzionarlo. Hmm, trovo curioso che la risposta più promossa sia quella che * non * risponde alla domanda su cosa questo "indica", e che questa risposta, l'unica che ha risposto alla domanda, è stata downvoted. Questo è così. –
Anche se sei molto solido e bello. Anche se hai buoni consigli per il caso. Non è una buona idea umiliare le persone. B.t.w. non è una risposta appropriata per la domanda. Questa è la causa principale di downvotare la risposta. – I159
dice semplicemente è possibile creare puntatore del tipo di nodo utilizzando solo NODE ogni volta, invece di scrittura nodo struct * ogni
- 1. MVCSitemapProvider indica nodo corrente e nodo principale
- 2. Che cosa esattamente typedef struct node {...} Node; rappresentare?
- 3. Che cosa significa il comando "nodo". fare?
- 4. Cosa significa node() | @ * significa XSLT?
- 5. cosa significa (nodo *) NULL in C?
- 6. @TargetApi (Build.VERSION_CODES.GINGERBREAD) Cosa indica questo codice in Android indica
- 7. Struct X in Struct X?
- 8. Chiamare Node Addons Nodo (C++) nell'elettrone
- 9. Cosa indica l'errore di Watchdog! @Sync?
- 10. Cosa indica ogni codice sc-win32-status?
- 11. Cosa indica l'annotazione @Valid in primavera?
- 12. Che cosa indica il prefisso 'k' nelle API di Apple?
- 13. Cosa indica il punto finale su un tipo C#?
- 14. Cosa indica il prefisso/private su un percorso file iOS?
- 15. npm viene fornito con il nodo ora. Cosa significa questo?
- 16. Jenkins Node senza Java
- 17. Utilizzo di Node Inspector con più processi di nodo
- 18. xpath per il nodo
- 19. Cosa fa il metodo Normalize di Java Node?
- 20. Seleziona il prossimo nodo del nodo selezionato in PHP DOM?
- 21. Il nodo radice è un nodo interno?
- 22. Modulo nodo cross-compilare con binding nativi con node-gyp
- 23. Errore: il vettore non indica un tipo
- 24. Cosa fa un'eccezione "Impossibile validare i dati" in System.Web.Configuration.MachineKeySection.GetDecodedData indica
- 25. Cosa indica la versione 255.255.255.255 per i file winmd?
- 26. Cosa indica "errore: opzione --single-versione-gestita esternamente non riconosciuta"?
- 27. Cosa significa "&" in '& .sub-title' indica in scss?
- 28. Cosa C++ sintassi struct "a: b" significa
- 29. jsTree Node Espandi/comprimi
- 30. ":" (due punti) in C struct - cosa significa?
Si prega di non nascondere tipi di puntatore dietro typedef nel codice vera, anche se . –
cattivo gusto. SCNR – ninjalj
quale sarebbe il modo migliore per scrivere questo codice. Nella struttura del libro è usato in 3 o 4 modi ... – Skr