Posizione operatore * in C all'interno di struct per le liste

di il
3 risposte

Posizione operatore * in C all'interno di struct per le liste

Un salve a tutti,

il problema a cui chiedo una soluzione è semplice e di natura prettamente didattica. Si tratta di un uso dell'operatore * nel  linguaggio C che leggo in molteplici codici di esempio su molti siti.
Ecco, se dal punto di vista strettamente teoretico capisco come una lista funzioni, non riesco a capire una parte di codice che da molti mi viene proposto. Ora pubblico un codice analogo a tutti quelli che ho letto.

typedef struct nodo{

    int elemento;
    struct nodo* successivo;

} nodoLista;

Non capisco cosa significhi l'istruzione nodo*.

3 Risposte

  • Re: Posizione operatore * in C all'interno di struct per le liste

    È un puntatore ad una struttura nodo dello stesso tipo.

    Lo puoi dichiarare all'interno della definizione della struttura nodo stessa, perché il puntatore è una semplice variabile a 4 o 8 byte che contiene un indirizzo in memoria, quindi il compilatore sa cosa fare senza ambiguità.

    Tutte cose descritte in un qualsiasi libro di testo sul C…

  • Re: Posizione operatore * in C all'interno di struct per le liste

    >> che leggo in molteplici codici di esempio 

    Basterebbe leggerlo in un solo libro del linguaggio, al capitolo “puntatori” (concordo con Weierstrass). Dal punto di vista teorico e pratico è tutto spiegato lì

    >> nodo*

    struct nodo *

    significa “indirizzo iniziale in memoria di una struttura di tipo “nodo”. Questo indirizzo viene memorizzato nella variabile ”successivo" che fa parte, a sua volta, di una struttura di tipo nodo. Quindi ogni struttura di tipo nodo avrà al suo interno un campo che indicherà l'indirizzo in memoria della struttura nodo a cui è legato. Se non c'è la prossima struttura, questo indirizzo sarà 0 (NULL).

  • Re: Posizione operatore * in C all'interno di struct per le liste

    Concordo con chi mi ha preceduto. La programmazione non si improvvisa ne si impara (solo) sulla rete. I puntatori (*) sono una parte fondamentale della programmazione in C. Un buon libro è sempre la prima cosa da consultare. Se proprio non si vuole prendere un libro, consiglio la seguente dispensa gratuita: https://ennebi.solira.org/c-lang/c-lang.pdf

    Aggiungo che sullo stesso sito si trova molto materiale utile.

Devi accedere o registrarti per scrivere nel forum
3 risposte