공용체는 C 프로그래밍 언어에서 서로 다른 데이터 유형의 여러 변수가 공유하는 메모리 위치입니다.
구문
구조체의 합집합 구문은 다음과 같습니다 -
union uniontag{
datatype member 1;
datatype member 2;
----
----
datatype member n;
}; 예시
다음 예제는 구조체의 합집합 사용을 보여줍니다 -
union sample{
int a;
float b;
char c;
}; 유니온 변수 선언
다음은 Union 변수에 대한 선언입니다. 다음과 같이 3가지 종류가 있습니다 -
유형 1
union sample{
int a;
float b;
char c;
}; 유형 2
union{
int a;
float b;
char c;
}s; 유형 3
union sample{
int a;
float b;
char c;
};
union sample s; -
Union이 선언되면 컴파일러는 자동으로 가장 큰 크기의 변수 유형을 생성하여 Union에 변수를 보관합니다.
-
언제든지 하나의 변수만 참조할 수 있습니다.
초기화 및 액세스
-
같은 구조의 구문이 공용체 구성원에 액세스하는 데 사용됩니다.
-
점 연산자는 회원에 접근하기 위한 것입니다.
-
화살표 연산자(->)는 포인터를 사용하여 멤버에 액세스하는 데 사용됩니다.
샘플 프로그램 1
다음 프로그램은 구조체의 합집합 사용법을 보여줍니다.
union sample{
int a;
float b;
char c;
}
main ( ){
union sample s = {10, 20.5, "A"};
printf("a=%d",s.a);
printf("b=%f",s.b);
printf("c=%c",s.c);
} 출력
위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다 -
a = garbage value b = garbage value c = A
구조체 연합
-
구조체는 유니온 내부에 중첩될 수 있으며 이를 구조체 유니온이라고 합니다.
-
구조체 내부에 유니온을 생성하는 것이 가능합니다.
샘플 프로그램 2
구조체의 합집합의 사용법을 보여주는 또 다른 C 프로그램은 다음과 같습니다 -
struct x{
int a;
float b;
};
union z{
struct x s;
};
main ( ){
union z u;
u.s.a = 10;
u.s.b = 30.5;
printf("a=%d", u.s.a);
printf("b=%f", u.s.b);
} 출력
위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다 -
a= 10 b = 30.5