Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    225

    [sizeof .... struct] in C

    Salve,
    aiutatemi a fare questo conticino.

    Dunque ho questo codice:

    #define LEN (20);

    typedef struct (
    int i; (i: 4 bytes)
    lword pippo; (pippo: 4 bytes)
    char pluto[LEN]; (pluto[]: 20 elementi * 1 byte = 20 bytes)
    prova2 papero; (papero: 8 bytes)
    ) prova1;

    typedef struct (
    int j; (j: 4 bytes)
    lword papera; (papera: 4 bytes)
    ) prova2;

    sizeof(prova1) = 36 bytes ????

    Ho fatto bene i calcoli?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    Stando a quello che so, la dimensione di una struttura non è necessariamente la somma delle dimensioni dei suoi elementi. E' per questo che è sempre meglio usare l'operatore sizeof...

  3. #3
    "sizeof will return the number of bytes reserved for a variable or data type."

    se devi saperlo prova con roba tipo :

    printf("%d \n", sizeof(prova1));//forse per le struct vuole il cast ?

  4. #4
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    Originariamente inviato da honneamise
    "sizeof will return the number of bytes reserved for a variable or data type."

    se devi saperlo prova con roba tipo :

    printf("%d \n", sizeof(prova1));//forse per le struct vuole il cast ?
    Che cast? Non serve alcun cast

  5. #5
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Non penso che la dimensione della struct sia data dalla somma delle dimensioni degli elementi visto che, ad esempio,
    char pluto[LEN];
    e' nient'altro che un puntatore e percio' penso occupi solo lo spazio necessario per memorizzare un puntatore (E non 20 byte).
    (I 20 byte saranno necessari, semmai, nell'area di mem. puntata dal puntatore contenuto nella struct.)

  6. #6
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    Originariamente inviato da Ed_Bunker
    Non penso che la dimensione della struct sia data dalla somma delle dimensioni degli elementi visto che, ad esempio,
    char pluto[LEN];
    e' nient'altro che un puntatore e percio' penso occupi solo lo spazio necessario per memorizzare un puntatore (E non 20 byte).
    (I 20 byte saranno necessari, semmai, nell'area di mem. puntata dal puntatore contenuto nella struct.)
    Vero, ma le strutture non sono collegate ai puntatori così fortemente come gli array Ci sono altri motivi per cui, in generale, la dimensione di una struttura non è la somma delle dimensioni dei campi..

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.