PDA

View Full Version : [C] Non riesco a leggere bene questa scrittura.


KaJZ
26-06-2011, 19:25
Ciao a tutti,

Stavo leggendo il codice di un esercizio svolto, vi incollo solo piccole frazioni che non capisco:

typedef struct nodolista{
Persona info;
struct nodolista *next;
}NodoLista;

Dunque, questa sopra è la lista, sotto invece c'è un typedef:

typedef NodoLista *TipoLista;

Secondo voi questo typedef è da leggersi come:
1) typedef (NodoLista *) TipoLista;
e quindi, tradotto in italiano: TipoLista è un alias della variabile puntatore NodoLista.
... oppure:
2) typedef NodoLista *TipoLista; quindi: "TipoLista è un alias puntatore della variabile NodoLista".

Penso di aver capito che l'operatore star (*) possa essere messo sia a destra che a sinistra in base a qualcosa che mi sfugge. :)

Il dubbio sorge dal fatto che in una funzione viene posta questa dichiarazione:

TipoLista aux;

Ora, dunque, perché non c'è il * davanti l'aux?

KaJZ
26-06-2011, 20:42
aux è un puntatore a nodolista, ovvero un tipo nodolista*. il typedef è da leggersi appunto come creazione di un alias per puntatore a nodolista. sinceramente non capisco le tue interpretazioni che differenza pratica hanno.... :mbe: :)

Ma quindi nella scrittura "typedef NodoLista *TipoLista;" l'operatore * appartiene a NodoLista o a TipoLista?

Perché a volte l'operatore * si mette a destra di una variabile e altre volte a sinistra? Ho provato a cercare ma non ho trovato nulla... :(

Ad esempio io sono abituato a leggere scritture come "int *x";
Ma in questo caso * sta messo a destra di NodoLista, sembra appartenere a TipoLista infatti...

Rsk
26-06-2011, 22:19
Ma quindi nella scrittura "typedef NodoLista *TipoLista;" l'operatore * appartiene a NodoLista o a TipoLista?

Perché a volte l'operatore * si mette a destra di una variabile e altre volte a sinistra? Ho provato a cercare ma non ho trovato nulla... :(

Ad esempio io sono abituato a leggere scritture come "int *x";
Ma in questo caso * sta messo a destra di NodoLista, sembra appartenere a TipoLista infatti...

Non farti ingannare..

typedef NodoLista *TipoLista

NodoLista è il tipo, TipoLista è il nome della variabile. Puntatore a NodoLista in questo caso.