Η λέξη κλειδί ένωσης
union tag {
union_member(s);
/* οι πρόσθετες δηλώσεις μπορούν να πάνε εδώ */
}instance;
Η λέξη κλειδί ένωσης χρησιμοποιείται για τη δήλωση των ενώσεων. Μια ένωση είναι μια συλλογή μιας ή περισσότερων μεταβλητών (union_members) που έχουν ομαδοποιηθεί με ένα ενιαίο όνομα. Επιπλέον, κάθε ένα από αυτά τα μέλη ένωσης καταλαμβάνει τον ίδιο τομέα της μνήμης.
Η ένωση λέξης κλειδιού προσδιορίζει την αρχή ενός καθορισμού ένωσης. Ακολουθείται από μια ετικέττα που είναι το όνομα που δίνεται στην ένωση. Μετά από την ετικέττα είναι τα μέλη ένωσης που εσωκλείονται στα στηρίγματα.
Μια περίπτωση, η πραγματική δήλωση μιας ένωσης, μπορεί επίσης να καθοριστεί. Εάν καθορίζετε τη δομή χωρίς την περίπτωση, είναι ακριβώς ένα πρότυπο που μπορεί να χρησιμοποιηθεί αργότερα σε ένα πρόγραμμα για να δηλωθούν οι δομές. Τα εξής είναι το σχήμα ενός προτύπου:
union tag {
union_member(s);
/* οι πρόσθετες δηλώσεις μπορούν να πάνε εδώ */
};
Για να χρησιμοποιήσει το πρότυπο, θα χρησιμοποιούσατε το ακόλουθο σχήμα:
union tag instance;
Για να χρησιμοποιήσετε αυτό το σχήμα, πρέπει να έχετε δηλώσει προηγουμένως μια ένωση με τη δεδομένη ετικέττα.
/* Κηρύξτε ένα πρότυπο ένωσης αποκαλούμενο ετικέττα */
union tag {
int num;
char alps;
}
/* Χρησιμοποιήστε το πρότυπο ένωσης */
union tag mixed_variable;
/* Δηλώστε μια ένωση και μια περίπτωση από κοινού */
union generic_type_tag {
char c;
int i;
float f;
double d;
} generic;
/* Initialize a union. */
union date_tag {
char full_date[9];
struct part_date_tag {
char month[2];
char break_value1;
char day[2];
char break_value2;
char year[2];
} part_date;
}date = {"09/12/80"};
Καλύτερα το καταλάβετε με τη βοήθεια των παραδειγμάτων:
#include <stdio.h>
int main()
{
union
{
int value; /* Αυτό είναι το πρώτο μέρος της ένωσης */
struct
{
char first; /* Αυτές οι δύο τιμές είναι το δεύτερο μέρος από το */
char second;
} half;
} number;
long index;
for (index = 12 ; index < 300000L ; index += 35231L)
{
number.value = index;
printf("%8x %6x %6x\n", number.value,
number.half.first,
number.half.second);
}
return 0;
}
Και η παραγωγή του προγράμματος θα επιδειχθεί ως εξής:
c c 0
89ab ffab ff89
134a 4a 13
9ce9 ffe9 ff9c
2688 ff88 26
b027 27 ffb0
39c6 ffc6 39
c365 65 ffc3
4d04 4 4d
|
|