공용 구조체 선언

"통합 선언" 변수 값 및 공용 구조체를 명명 하는 태그를 지정 합니다.변수 값 통합 "멤버" 라고 하는 다른 형식일 수 있습니다.공용 구조체를 다른 언어의 "variant 레코드"와 유사합니다.

구문

  • 구조체 또는 공용 구조체 지정자:
    구조체 또는 공용 구조체에 식별자 선택**{** 구조체 선언의 목록 }

    구조체 또는 공용 구조체 식별자

  • 구조체 또는 공용 구조체:
    struct

    union

  • 구조체 선언의 목록:
    구조체 선언

    구조체 선언의 목록 구조체 선언

통합 콘텐트를 말합니다.

  • 구조체 선언:
    지정자 한정자 목록 구조체 선언 자 목록 ;

  • 지정자 한정자 목록:
    형식 지정자 지정자 한정자 목록 선택

    형식 한정자가 지정 자가 한정자 목록 선택

  • 구조체 선언 자 목록:
    구조체를 선언 자

    구조체 선언 자 목록 , 구조체를 선언 자

변수 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 특정 끝

참고 항목

개념

변수를 선언 하 고 선언 자