Typredef insieme a struct

di il
4 risposte

Typredef insieme a struct

Buongiorno a tutti, sono nuovo di questo forum e prima di tutto saluto tutti voi.
Ho letto alcune guide sul C e non comprendo l'utilizzo di typedef insieme a struct. Più precisamente non capisco il confronto fra questi due pezzi di codice:

Primo pezzo di codice:

typedef struct
{
int numero_colore;
} automobile;


Secondo pezzo di codice:

typedef struct macchina
{
int numero_colore;
} automobile;


Se li si osserva si nota che nel primo caso dopo struct viene aperta la graffa e definita la struttura, mentre nel secondo caso viene anche dato un nome (diverso da quello specificato dopo la parentesi graffa).
Inentrambi i casi il compilatore non mi dà errore (ho provato con DevC ed eseguendo non mi genera errori)

A questo punto la mia domanda: Cosa cambia fare in un modo e nell'altro? quando è meglio un metodo e quando è meglio l'altro?

Vi ringrazio in anticipo,
holyhope

4 Risposte

  • Re: Typredef insieme a struct

    La prima definisce un struct anonima in automobile. La seconda definisce una struct chiamata macchina in automobile. Per la seconda è valida questa espressione che non puoi fare nella prima:
    
    struct macchina laMacchina;
    
    puoi invece fare la stessa cosa con le ridefiniziooni delle struct
    
    prima struct
    automobile laMacchina;
    
    seconda struct
    automobile laMacchina;
    
  • Re: Typredef insieme a struct

    Quindi nel secondo caso posso istanziare agevolmente più volte la struttura?
    Cioè la differenza è che nel primo caso devo riscrivere tutto il codice per creare "automobile2" :

    ++++++++++++++++++++++

    typedef struct
    {
    int numero_colore;
    } automobile1;

    typedef struct
    {
    int numero_colore;
    } automobile2;

    ++++++++++++++++++++++

    mentre nel secondo caso mi bastano queste righe:

    *******************************

    typedef struct macchine
    {
    int numero_colore;
    } automobile1;

    struct macchina automobile2;

    ******************************

    E' giusto quanto ho detto? Grazie
  • Re: Typredef insieme a struct

    Non confondere la ridefinzione (creazione di alias tramitte il typdef) con la creazione di un nuovo tipo di dato.
    
    typedef struct macchine
    {
    int numero_colore;
    } automobile1;
    
    qui stai faccendo due cose in una. Crei una struct di nome macchine e crei nello stesso momento un alias di questo struct tramite il typedef struct macchine automobile1.
    
    typedef struct
    {
    int numero_colore;
    } automobile1;
    
    qui invece stai solo creando una struct automobile1 perche stai ridefinedo una struct anonima in automobile1 (typedef struct automibile1)

    Guarda anche quà la definizione di typedef che non viene utilizzata solo per le struct.
    http://it.wikipedia.org/wiki/Typede
  • Re: Typredef insieme a struct

    Ok, ora dovrebbe essere chiaro!
    Ti ringrazio
Devi accedere o registrarti per scrivere nel forum
4 risposte