조합 키워드
union tag {
union_member(s);
/* additional statements may go here */
}instance;
조합 키워드는 조합 선언을 위해 사용된다. 조합은 단 하나 이름의 밑에 분류된 한개 이상 가변 (union_members)의 소장품이다. 더하여, 이 조합원의 각각은 기억의 동일한 지역을 점유한다.
키워드 조합은 조합 정의의 처음을 확인한다. 그것은 조합에 주어진 이름인 꼬리표에 의해 따랐다. 꼬리표 다음 버팀대에서 둘러싸인 조합원은 이다.
경우, 조합의 실제적인 선언은 또한, 정의될 수 있다. 당신이 경우 없이 구조를 정의하는 경우에, 구조를 선언하는 프로그램에서 나중에 이용될 수 있는 다만 템플렛이다. 뒤에 오는 것 템플렛의 체재이다:
union tag {
union_member(s);
/* 추가적인 계산서는 여기에서 갈지도 모른다 */
};
템플렛을 이용하기 위하여는, 당신은 뒤에 오는 체재를 이용할 것입니다:
union tag instance;
이 체재를 사용하고, 당신은 이전에 주어진 꼬리표를 가진 조합이 선언했음에 틀림없다.
/* 꼬리표에게 불린 조합 템플렛을 선언하십시오 */
union tag {
int num;
char alps;
}
/* 조합 템플렛을 이용하십시오 */
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; /* This is the first part of the union */
struct
{
char first; /* These two values are the second part of it */
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
|
|