Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    2

    [C++] Chiarimento su typedef per liste

    Salve a tutti!
    Vorrei un chiarimento sul comando typedef.So che è un alias,cioè se scrivo

    codice:
    typedef double doppio;
    posso dichiarare variabili di tipo double scrivendo doppio anzichè double;non capisco il funzionamento in questo caso:

    codice:
    struct  cella {
                      int valore;
                      cella* succ;
                   }; 
    
    typedef cella* lista;
    typedef cosa sta ad indicare?Il suo uso è sempre consigliato?

    Ringrazio in anticipo per la risposta!

  2. #2
    Anche in questo caso, definisci "lista" come alias per "cella *". Questo può avere senso, perché come lista spesso si considera il puntatore al suo primo elemento. Tuttavia non sono d'accordissimo con il "nascondere" i puntatori nei typedef, a mio avviso sarebbe sempre meglio rendere chiaro quando un tipo è un valore o un puntatore.

    Nota comunque che quel typedef dovrebbe essere
    codice:
    typedef struct cella * lista;
    dato che se ti riferisci ad un tipo struct devi specificare la parola chiave struct davanti al suo nome. Per evitare questa ridondanza, spesso si scrive:
    codice:
    typedef struct
    {
       /* tipi contenuti nella struttura */
    } nome;
    ad esempio,
    codice:
    typedef struct
    {
        double x;
        double y;
    } punto;
    Creando "punto" come alias per la struttura dichiarata. In questo modo nel codice si può scrivere direttamente "punto" invece di dover scrivere, ad esempio "struct punto". Nota che questo idioma ha senso in C, mentre in C++ non è necessario, dato che i nomi di strutture e classi non hanno bisogno di particolari qualificatori.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.