Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [ C ] strutture

  1. #1
    Utente di HTML.it L'avatar di C232
    Registrato dal
    Dec 2004
    Messaggi
    303

    [ C ] strutture

    ragazzi non capisco perche una struttura non puo contenere un membro tipo della stessa struttura, ma puo contenere un membro puntatore tipo della stessa struttura.


    Esempio:

    struct nomeStruttura {
    int uno;
    int due;
    nomeStruttura* tre; // Puo contenere un puntatore tipo della stessa struttura ma non un membro tipo della stessa. Come mai?
    };
    C/C++

  2. #2
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    Ci ho pensato un po', però, in effetti, mi sembra un problema analogo a quello legato alle funzioni ricorsive: se non ci sono delle condizioni di terminazione, come faccio a non andare in loop?
    Bene, se dichiaro una struttura ricorsiva, cioè che contiene un puntatore a se stessa, non ho problemi di questo tipo, in quanto i puntatori hanno dimensione nota (32 o 64 bit a seconda dell'archiettura), per cui il compilatore sa quanto dovrà allocare ad una variabile del tuo tipo; mettiamo invece il caso di dichiarare una struttura ricorsiva come nel tuo caso, come fa il compilatore a sapere quanto è grande? Il compilatore sa che quando dichiari una variabile della tuo tipo deve allocare memoria per due int e poi ... per altri due int ... per altri due int ... all'inifinito.

    Spero di esserti stato d'aiuto.

    Se non ho risposto correttamente, correggetemi che sono pure io qui per imparare :-)

  3. #3
    E' come dice ibykos
    Una strutture non può contenere se stessa; avrebbe dimensioni infinite.

    Quello che vuoi fare è:
    codice:
    struct a {
        int x,y,z;
        //blahblah
        struct a
    }
    ma struct a contiene a sua volta un'altro struct a, e così via fino all'infinito (o più probabilmente ad uno stack overflow )

  4. #4
    Utente di HTML.it L'avatar di C232
    Registrato dal
    Dec 2004
    Messaggi
    303

    ...

    giusto grazie....Non ci avevo pensato.
    C/C++

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 © 2025 vBulletin Solutions, Inc. All rights reserved.