공용 구조체 선언
"통합 선언" 변수 값 및 공용 구조체를 명명 하는 태그를 지정 합니다.변수 값 통합 "멤버" 라고 하는 다른 형식일 수 있습니다.공용 구조체를 다른 언어의 "variant 레코드"와 유사합니다.
구문
구조체 또는 공용 구조체 지정자:
구조체 또는 공용 구조체에 식별자 선택**{** 구조체 선언의 목록 }구조체 또는 공용 구조체 식별자
구조체 또는 공용 구조체:
structunion
구조체 선언의 목록:
구조체 선언구조체 선언의 목록 구조체 선언
통합 콘텐트를 말합니다.
구조체 선언:
지정자 한정자 목록 구조체 선언 자 목록 ;지정자 한정자 목록:
형식 지정자 지정자 한정자 목록 선택형식 한정자가 지정 자가 한정자 목록 선택
구조체 선언 자 목록:
구조체를 선언 자구조체 선언 자 목록 , 구조체를 선언 자
변수 union 형식이 해당 형식으로 정의 된 값 중 하나를 저장 합니다.구조체 및 공용 구조체 선언이 같은 규칙을 제어합니다.공용 구조체 필드 또한 비트 있을 수 있습니다.
공용 구조체의 멤버를 입력 하는 불완전 한 형식에 사용할 수 없습니다 void, 또는 함수 형식입니다.따라서 구성원 인스턴스 통합 될 수 없습니다 있지만 선언 되는 공용 구조체 형식에 대 한 포인터를 수 있습니다.
공용 구조체 형식의 선언에만 서식 파일입니다.변수를 선언할 때까지 메모리 예약 되지 않습니다.
[!참고]
두 형식의 공용 구조체를 선언 된 및 값 저장 되지만 다른 형식으로 합집합을 액세스 하는 경우 결과 신뢰할 수 수 없습니다.예를 들어, 공용 구조체의 float 및 int 선언 됩니다.A 부동 소수점 값에 저장 됩니다, 있지만 값으로 나중에 액세스 하는 프로그램은 int.이 경우에는 값의 내부 저장소에 따라 달라 집니다 부동 소수점 값입니다.정수 값 불안정 해질 수 있습니다.
예제
공용 구조체의 예는 다음과 같습니다.
union sign /* A definition and a declaration */
{
int svar;
unsigned uvar;
} number;
공용 구조체 변수를 정의 하는이 예제 sign 를 입력 하 라는 변수를 선언 number 멤버가 두: svar, 부호 있는 정수 및 uvar, 부호 없는 정수입니다.현재 값이이 선언 있습니다 number 는 부호 있는 또는 부호 없는 값으로 저장할 수 있습니다.이 공용 구조체 형식과 연결 된 태그는 sign.
union /* Defines a two-dimensional */
{ /* array named screen */
struct
{
unsigned int icon : 8;
unsigned color : 4;
} window1;
int screenval;
} screen[25][80];
screen 2, 000 요소가 배열에 포함 됩니다.배열의 각 요소는 개별 공용 구조체와 두 명의 구성원입니다: window1 및 screenval.window1 멤버인 구조체 두 비트 필드 멤버를 icon 및 color.The screenval member is an int.언제 든 지 각 union 요소 하나 보유는 int 표시 screenval 또는 표현 하는 구조 window1.
Microsoft 전용
다른 구조체나 공용 구조체의 멤버인 경우 중첩 된 공용 구조체를 익명으로 선언할 수 있습니다.이 공용 구조체의 이름이 없습니다 예입니다.
struct str
{
int a, b;
union / * Unnamed union */
{
char c[4];
long l;
float f;
};
char c_array[10];
} my_str;
.
.
.
my_str.l == 0L; /* A reference to a field in the my_str union */
공용 구조체는 아무 때나 공용 구조체에 포함 된 데이터의 형식을 지정 하는 필드를 포함 하는 구조 내에서 중첩 되어 있습니다.이 공용 구조체에 대 한 선언의 예입니다.
struct x
{
int type_tag;
union
{
int x;
float y;
}
}
참조 하십시오 구조체 및 공용 구조체 멤버 공용 구조체를 참조 하는 방법에 대 한 정보입니다.
Microsoft 특정 끝