Das Anschluß Schlüsselwort
union tag {
union_member(s);
/* additional statements may go here */
}instance;
Das Anschlußschlüsselwort wird für das Erklären der Anschlüße verwendet. Ein Anschluß ist eine Ansammlung einer oder mehrer Variablen (union_members) die unter einem einzelnen Namen gruppiert worden sind. Zusätzlich besetzt jedes dieser Anschlußmitglieder den gleichen Bereich des Gedächtnisses.
Der Schlüsselwortanschluß kennzeichnet den Anfang einer Anschlußdefinition. Er ist von einem Umbau gefolgt, der der Name ist, der dem Anschluß gegeben wird. Nach dem Umbau sind die Anschlußmitglieder, die in den Klammern umgeben werden.
Ein Fall, die tatsächliche Erklärung eines Anschlußes, kann auch definiert werden. Wenn du die Struktur ohne den Fall definierst, ist er eine Schablone gerecht, die in einem Programm später benutzt werden kann, um Strukturen zu erklären. Das folgende ist das Format einer Schablone:
union tag {
union_member(s);
/* zusätzliche Aussagen können hier gehen */
};
Um die Schablone zu benutzen, würdest du das folgende Format verwenden:
union tag instance;
Um dieses Format zu verwenden, mußt du einen Anschluß mit dem gegebenen Umbau vorher erklärt haben.
/* Eine Anschlußschablone erklären, die Umbau genannt wird */
union tag {
int num;
char alps;
}
/* Die Anschlußschablone benutzen */
union tag mixed_variable;
/* Einen Anschluß und einen Fall zusammen erklären */
union generic_type_tag {
char c;
int i;
float f;
double d;
} generic;
/* Einen Anschluß initialisieren. */
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"};
Uns es mit Hilfe der Beispiele verstehen besser lassen:
#include <stdio.h>
int main()
{
union
{
int value; /* Dieses ist das erste Teil des Anschlußes */
struct
{
char first; /* Diese zwei Werte sind das zweite Teil von ihm */
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;
}
Und der Ausgang des Programms wird angezeigt, wie folgt:
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
|
|