공용 구조체
A union (개체 배열 또는 클래스 형식이 될 수 있지만), 언제 든 지 구성원 목록에서 개체를 하나만 들어 있는 사용자 정의 데이터 나 클래스 형식입니다.
union [tag] { member-list } [declarators];
[union] tag declarators;
매개 변수
tag
공용 구조체에 지정 된 형식 이름입니다.member-list
공용 구조체는 데이터 형식 목록이 포함 될 수 있습니다.설명 부분을 참조하십시오.declarators
선언 자 목록 공용 구조체의 이름이 지정 됩니다.자세한 내용은 선언 자 개요를 참조하십시오.
설명
해당 멤버 목록 합집합의 합집합을 포함할 수 있는 데이터 종류를 나타냅니다.충분 한 스토리지의 가장 큰 멤버를 보유 하는 공용 구조체 필요의 멤버 목록.자세한 내용은 참조 하십시오 Union 선언 (C 언어 참조).
공용 구조체를 선언합니다.
Union 키워드를 사용 하 여 공용 구조체의 선언 시작 및 구성원 목록을 중괄호로 묶습니다.
// declaring_a_union.cpp
union DATATYPE // Declare union type
{
char ch;
int i;
long l;
float f;
double d;
} var1; // Optional declaration of union variable
int main()
{
}
공용 구조체를 사용 하 여
C + + 공용 구조체는 제한 된 클래스 형식입니다.액세스 지정자 (공개, 보호, 개인) 멤버 및 멤버 함수, 생성자 및 소멸자를 포함 하 여이 포함 될 수 있습니다.가상 함수 또는 정적 데이터 멤버를 사용할 수 없습니다.기본 클래스로 사용할 수 없습니다 없으며 기본 클래스를 가질 수 있습니다.기본 액세스는 공용 구조체의 멤버는 공용입니다.
C union 형식 데이터 멤버만 포함할 수 있습니다.
C를 사용 하 여는 union 공용 구조체 변수를 선언 하는 키워드입니다.C + +에서 union 키워드가 필요 하지 않습니다.
union DATATYPE var2; // C declaration of a union variable
DATATYPE var3; // C++ declaration of a union variable
Union 형식의 변수를 공용 구조체에 선언 된 모든 형식의 값을 보유할 수 있습니다.멤버 선택 연산자 사용 (.)는 공용 구조체의 멤버에 액세스 합니다.
var1.i = 6; // Use variable as integer
var2.d = 5.327; // Use variable as double
선언 하 고 중괄호 안에 식을 지정 하 여 동일한 문에 union을 초기화할 수 있습니다.식이 평가 되 고 공용 구조체의 첫 번째 필드에 할당 합니다.
예제
// using_a_union.cpp
#include <stdio.h>
union NumericType
{
int iValue;
long lValue;
double dValue;
};
int main()
{
union NumericType Values = { 10 }; // iValue = 10
printf_s("%d\n", Values.iValue);
Values.dValue = 3.1416;
printf_s("%f\n", Values.dValue);
}
Output
10
3.141600
NumericType Union입니다 배열 메모리에 (개념적으로) 다음 그림에 나와 있는 것 처럼.
NumericType 공용 구조체의 데이터 저장소