Strutture e typedef

di il
4 risposte

Strutture e typedef

Salve a tutti, ho iniziato da poco a studiare il linguaggio c++ e ho un grosso dubbio sulle strutture e sulla keyword typedef. Mi spiego meglio, so che la sintassi per la struttura è:

stuct <NomeTipo> 
{
  <Tipo><NomeCampo>
  //....................
  <Tipo><NomeCampo>
} <NomeOggetto0>, ... , <NomeOggettoN>;
Quindi scrivere così:

struct Numero
{
  int a;
  float b;
}var1,var2;
oppure come segue, è la stessa identica cosa:

struct Numero
{
  int a;
  float b;
};
Numero var0, var1; // in C so che deve essere   struct Numero var0, var1;
Il problema vi è quando utilizzo la keyword typedef su una struttura; la maggior parte degli esempi porta qualcosa di questo tipo:

typedef struct numero
{
  int a;
  float b;
}prova;
Solo che in questo caso "prova" non sarà una variabile di tipo struttura ma l'etichetta per questa struttura; di solito viene usata in C per scrivere al posto di
struct numero var1, var2;
una dichiarazione di questo tipo:
prova var1,var2;
Ora il mio dubbio sta nel fatto di voler dichiarare var1 e var2 così come facevo senza l'utilizzo di typedef, ma utilizzando typedef... cioè se io scrivo:

typedef struct numero
{
  int a;
  float b;
}var1,var2;
Cosa succede? creo due etichette? mi da errore? dichiaro le variabili? Come faccio ad assegnare l'etichetta e a dichiarare le variabili stesso all'interno della definizione della struttura?

Mi scuso per essere stata un po' confusionaria, spero che riusciate a capire il mio dubbio e vi ringrazio in anticipo per le future risposte.

4 Risposte

  • Re: Strutture e typedef

    Crei due etichette. Vedi le definizioni delle strutture in windef.h ogni struttura è definita come
    
    typedef struct _struttura
    {
    }struttura,*lpStruttura;
    
    così crei due ettichette una per allocamento stack, l'altra per allocamento heap.
  • Re: Strutture e typedef

    Mm quindi in quel modo creo due etichette, ma se voglio fare
    
    typedef struct numero
    {
      int a;
      float b;
    }prova;
    prova var1,var2;
    
    direttamente nella definizione della struttura? si può fare?
    Vedi le definizioni delle strutture in windef.h
    Emh... credo di saperne molto poco, dov'è che devo vedere...?
  • Re: Strutture e typedef

    No, non lo puoi fare, il typedef è x definizione una ridefinzione di una struttura, quindi stai creando dei alias.
    Trova windef.h nel tuo pc e aprilo per vedere cos'ha dentro.
  • Re: Strutture e typedef

    Grazie per l'aiuto.
Devi accedere o registrarti per scrivere nel forum
4 risposte