Struct in una struct

di il
20 risposte

20 Risposte - Pagina 2

  • Re: Struct in una struct

    Chiedo scusa avete ragione ma credetemi sto perdendo la testa con questo programmino.
    comunque ho risolto in questo modo
    
    iniziale->stradat=(struct strada **)malloc(sizeof(struct strada* )*6);
         //creare la strada 
         for(i=0;i<5;i++){
         iniziale->stradat[i]=(struct coda *)malloc(sizeof(struct coda));
         printf("inserisci il nome della %d strada",i+1);
         scanf("%d",&iniziale->stradat[i]->nome);
         }
    
    però vorrei capire meglio qual è la differenza dello scrivere cosi
    
    iniziale->stradat=(struct strada **)malloc(sizeof(struct strada* )*5);
    
    e scrivere così
    
    iniziale->stradat=(struct strada *)malloc(sizeof(struct strada)*5);
    
  • Re: Struct in una struct

    "coda" ? "nome" ? Puoi mettere TUTTO il codice, dall'include al return
  • Re: Struct in una struct

    Strutture
    
    struct coda{
       struct autom * auto_strada;
       struct coda * next;
       struct coda * testa;
       struct coda * ultimo;
       struct rotatoria * collegamento;
    };
    
    struct istante{
       struct rotatoria * rotat_ist;
       struct strada  *stradat;
       int momento;
    };
    
    struct strada{
       int nome;
       struct coda *attesa;
    };
    

    main
    
    struct istante * iniziale;
    iniziale->stradat=(struct strada **)malloc(sizeof(struct strada* )*6);
         //creare la strada 
         for(i=0;i<5;i++){
         iniziale->stradat[i]=(struct coda *)malloc(sizeof(struct coda));
         printf("inserisci il nome della %d strada",i+1);
         scanf("%d",&iniziale->stradat[i]->nome);
         }
    
  • Re: Struct in una struct

    In generale...

    int x; e' una variabile. &x; e' il puntatore di x

    /////////////////////////////////////////////////////////////

    int *x; e' un puntatore "vuoto" che rappresenta la locazione di memoria di un int (o più int in posizioni adiacenti);
    per dire al pc che ti servono 40 byte di memoria per salvare i tuoi interi usi la malloc(), che restituisce il puntatore al primo elemento della serie. tu ovviamente devi salvare la posizione della memoria ora utilizzabile e quindi fai assumere a x il valore ritornato dalla malloc().
    ( x=(int*)malloc(40) )
    x[5] e' la quinta posizione di memoria di dimensione 4 tra quelle allocate (contata a partire da x)

    //////////////////////////////////////////////////////////////

    int **x; e' un puntatore vuoto" che rappresenta la locazione di memoria di un puntatore a int (o più puntatori in posizioni adiacenti);
    per dire al pc che ti servono 5 puntatori distinti a int li allochi con ( x=(int**)malloc(sizeof(int*)*5) ).
    x[0] e' il puntatore allocato nella prima posizione(ma ad esso non corrisponde una posizione di memoria utilizzabile)

    per dire al pc che ti servono 40 byte di memoria per salvare i tuoi interi usi la malloc(), che restituisce il puntatore al primo elemento della serie. tu ovviamente devi salvare la posizione della memoria ora utilizzabile e quindi fai assumere a x il valore ritornato dalla malloc().
    ( x[0]=(int*)malloc(40) )
    x[0][5] e' la quinta posizione di memoria di dimensione 4 tra quelle allocate (contata a partire da x[0])
  • Re: Struct in una struct

    Ps: mi sono basato su un sistema a 32 bit in cui gli int sono grandi 4 byte

    Oregon correggimi se sbaglio
  • Re: Struct in una struct

    Grazie per la spiegazione e scusa se non sono stato chiaro nelle risposte prima
Devi accedere o registrarti per scrivere nel forum
20 risposte