διαφορά union με struct ?

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
katerinaaa
Δημοσιεύσεις: 109
Εγγραφή: 28 Ιαν 2010 12:46

διαφορά union με struct ?

Δημοσίευση από katerinaaa » 26 Νοέμ 2011 18:14

Καλησπέρα έχω συναντήσει σε κώδικα στο internet την έννοια του union
αλλά δε καταλαβαίνω τι διαφορά έχει από ένα απλό struct μπορεί να μου πει καποιος ?

Ας πούμε ότι έχουμε

Κώδικας: Επιλογή όλων

struct _man
{
    union fullname{
         char name[15];
        char surname[20];
    }full_name;
  
    int age;
};

typedef struct _man man;
Πως μπορώ να γράψω το ίδιο χωρίς union ?
Αλλάζει μετά ο τρόπος προσπέλασης ?
Ευχαριστώ πολύ


katerinaaa
Δημοσιεύσεις: 109
Εγγραφή: 28 Ιαν 2010 12:46

διαφορά union με struct ?

Δημοσίευση από katerinaaa » 27 Νοέμ 2011 10:23

Ευχαριστώ πολύ

thanos713
Δημοσιεύσεις: 4
Εγγραφή: 05 Δεκ 2011 17:21
Επικοινωνία:

διαφορά union με struct ?

Δημοσίευση από thanos713 » 05 Δεκ 2011 17:37

Ίσως άργησα λίγο, αλλά με λίγα λόγια η ένωση (union) πιάνει όση μνήμη χρειάζεται ο μέγιστος τύπος δεδομένων ενώ η δομή (struct) πιάνει όσο θέλουν όλοι οι τύποι δεδομένων που χρησιμοποιήθηκαν. Το ξέρω ότι το εξήγησα άθλια γι' αυτό να κι ένα παράδειγμα:

Κώδικας: Επιλογή όλων

union stoixeia
{
     char onoma[20], epitheto[30];
     int arMitroou;
}mathitis;
Στην προκειμένη περίπτωση, άμα κάνουμε sizeof(mathitis) θα δούμε 30, διότι το μέγιστο ποσό μνήμης μιας μεταβλητής-πίνακα της ένωσης είναι 30. Στην δομή θα μας βγάλει το άθροισμα όλων των μεταβλητών, δηλαδή 54. Αξίζει να σημειωθεί ότι στην ένωση δεν μπορούμε να δουλέψουμε πολύ εύκολα, λόγω του ότι χρησιμοποιούν όλες οι μεταβλητές την ίδια μνήμη.

ΥΣ. Τώρα δοκίμασα ότι είπα, και είδα ότι μου βγάζει ότι είπα +2, δηλαδή 32 και 56... Δεν ξέρω που οφείλεται όμως αυτό, όποιος ξέρει ας βοηθήσει, πάνω κάτω όμως ό,τι είπα πρέπει να συμβαίνει.

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

διαφορά union με struct ?

Δημοσίευση από gvre » 05 Δεκ 2011 17:57

When applied to an operand that has structure or union type, the result is the total number of bytes in such an object, including internal and trailing padding.

Περισσότερα στο http://c0x.coding-guidelines.com/6.5.3.4.html

thanos713
Δημοσιεύσεις: 4
Εγγραφή: 05 Δεκ 2011 17:21
Επικοινωνία:

διαφορά union με struct ?

Δημοσίευση από thanos713 » 05 Δεκ 2011 21:44

Α μπράβο, έτσι στέκει απόλυτα, ευχαριστώ πολύ. :)

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης