madoka
Μέλος
- Εγγρ.
- 24 Ιουλ 2013
- Μηνύματα
- 1.154
- Like
- 0
- Πόντοι
- 16
Απο δομές τι κανεις?
Δίνεται η δομή s :
struct {
double a;
union {
char b[4];
double c;
int i;
} e;
char f[4];
} s;
Άν οι τύποι char , double , int καταλαμβάνουν 1 , 8 και 4 bytes αντίστοιχα και επισης δεν υπάρχουν τρύπες αναμεσα
στα μέλη της δομής , ποιος θα ειναι ο χώρος που θα εκχωρήσει ένας μεταγλωτιστής της C για την s ?
Λοιπόν, έχουμε για double a=8 bytes.
Για την union Θα πρέπει να βρούμε ποιο από τα συστατικά της πιάνει τον μεγαλύτερο χώρο. Η union έχει τη σημασία ότι μπορεί εκεί να βάλουμε είτε
char b[4];
double c;
int i;
Ένα από τα τρία θα μπει, δεν μπορείς να χρησιμοποιήσεις και τα 3 μαζί. Το char b[4] έχει μέγεθος 4 bytes, αφού το char είναι ένα byte. To double c έχει μέγεθος 8 bytes και το int i μέγεθος 4 bytes.
Τέλος το char f[4] θα πιάσει 4 bytes. Συνεπώς έχουμε 8 (gia double a) + 8 (gia union) + 4 (gia char f[4]) =20 bytes
για όλα, άρα το sizeof(s) θα είναι 20 bytes.
Ρε μπας και είναι καμιά δικιά σου και με έβαλες τώρα να στην πω;