C - liste e manipolare strutture di dati

di il
4 risposte

C - liste e manipolare strutture di dati

Salve sono alle prime armi con il C; mi viene proposto il seguente codice per la gestione di una lista a puro esempio didattico

typedef struct cell
{
int miointero;
struct cell *prossimo;
} cella;

cella *nuovacella(void)
{
return (cella *)malloc(sizeof(cella));   // qui cosa sta succedendo??
}
Supponiamo ora di definire 2 puntatori come segue:

cella *var1, *var2;
var1 = nuovacella();
var2 = var1;   // <----cosa capita in questo punto??
Il mio dubbio è capire cosa accade durante l'uguaglianza var2 (ancora non definita come dimensioni tramite malloc(sizeof(...)) con var1. Prendono le stesse dimensioni, lo stesso valore della variabile miointero e lo stesso valore del puntatore *prossimo? Oppure no? Grazie per qualsiasi dritta in merito!!!

Ciao, Jumpier

4 Risposte

  • Re: C - liste e manipolare strutture di dati

    Var1 contiene un indirizzo di memoria, var2 semplicemente conterrà lo stesso indirizzo.
  • Re: C - liste e manipolare strutture di dati

    Grazie della risposta ma sto facendo confusione ....
    Quando dichiaro un puntatore in questo modo
    MIOTIPO *miopuntatore (dove MIOTIPO può essere INT, struttura ecc..)
    avrò che *miopuntatore conterrà un indirizzo. Se come nel mio esempio dichiaro:

    cella *var1, *var2;

    allora *var1 conterrà l'indirizzo di cosa? di chi? dell'inizio di una struttura pari a cella?
    Scusatemi ma non riesco a capire questo fatto. Grazie per qualsiasi info.


    Jumpier
  • Re: C - liste e manipolare strutture di dati

    Non capisco la relazione tra la precedente domanda questa ...

    E quando chiedi cosa conterrà var1 la risposta è "l'indirizzo di ciò a cui punta var1" ... se è una struttura, ovviamente punterà al primo elemento della struttura, se è un int punterà all'int ...

    Non comprendo ancora il tuo dubbio ... mi sembra tutto chiaro ...
  • Re: C - liste e manipolare strutture di dati

    Grazie, lo so che sembra banale ma non ero sicuro.
    Ancora una domanda cortesemente; se devo realizzare una lista che contiene al suo interno i dati di una persona più un puntatore ad una seconda lista che contiene i dati degli amici qual è la procedura corretta? Io stavo provando in questo modo:
    
    typedef struct struAmico
    {
        char nome[20];
        struct struAmico *prossimo;
    }tipoAmico;
    
    typedef struct struPersona
    {
        char nome[20];
        char cognome[20];
        int eta;
        struct tipoAmico *prossimo;
    }tipoPersona;
    
    typedef struct struLista
    {
            tipoPersona persona;
            struct struLista *prossimo;
    }lista;
    
    può andare? oppure cos'è che non va? Grazie ma faccio proprio tanta difficoltà ...
Devi accedere o registrarti per scrivere nel forum
4 risposte