c union 예제

C/C++ 공용 구조체 형식의 구문과 캐스트 개념은 태그가 지정되지 않은 형태로 있지만 ALGOL 68에서 파생되었습니다. [1] 공용 구조의 모든 구성원에 액세스하려면 멤버 액세스 연산자(.)를 사용합니다. 멤버 액세스 연산자는 공용 구조자 변수 이름과 액세스하려는 공용 구조화 멤버 간의 기간으로 코딩됩니다. 키워드 공용 구조체를 사용하여 공용 구조체 유형의 변수를 정의합니다. 다음 예제는 프로그램에서 공용 구조체를 사용하는 방법을 보여 주며 ALGOL 68은 공용 구조체에 태그를 지정하고 사례 절을 사용하여 런타임시 구성 유형을 구별하고 추출합니다. 다른 공용 구조체가 포함된 공용 구조체는 모든 구성 가능성의 집합으로 처리됩니다. C 유니온은 구조체, 즉 함께 그룹화되는 다른 데이터 형식의 수집과도 같습니다. 공용 구조체의 각 요소를 멤버라고 합니다. 언어 및 형식에 따라 공용 구조체 값은 특정 형식을 알지 못해도 할당 및 같음 비교와 같은 일부 작업에 사용할 수 있습니다. 다른 작업에는 일부 외부 정보 또는 태그가 지정된 공용 구조조정을 사용하여 해당 정보를 요구할 수 있습니다.

공용 구조체에 대한 포인터? 구조체와 마찬가지로 공용 구조체에 대한 포인터를 가질 수 있으며 화살표 연산자(->)를 사용하여 멤버에 액세스할 수 있습니다. 다음 예제에서는 동일을 보여 줍니다. 따라서 변수의 메모리를 여러 가지 방법으로 읽을 수 있기를 원한다면 예를 들어 한 번에 한 바이트씩 정수 읽기를 할 수 있습니다. 형식이 해당 형식이 사용할 수 있는 모든 값의 집합으로 간주되는 경우 공용 구조체 형식은 해당 필드의 모든 값을 사용할 수 있으므로 공용 구조체 형식의 수학적 결합입니다. 또한 수학 조합이 중복을 폐기하기 때문에 둘 이상의 공용 필드가 단일 공통 값을 사용할 수 있는 경우 마지막으로 작성된 필드만값으로 구분하는 것은 불가능합니다. 컴파일러에 의해 조합의 크기는 어떻게 결정합니까? 조합의 크기는 조합에서 가장 큰 구성원의 크기에 따라 수행됩니다. 구조체 및 공용 구조체 지정자는 동일한 형태를 갖습니다. [ .

. . ] 공용 구조체의 크기는 가장 큰 멤버를 포함하기에 충분합니다. 멤버 중 대부분의 값은 언제든지 공용 구조체 개체에 저장할 수 있습니다. 적절하게 변환된 공용 구조체 개체에 대한 포인터는 각 멤버(또는 멤버가 비트 필드인 경우 해당 개체가 있는 단위)를 가리키며 그 반대의 경우도 마찬가지입니다. 공용 구조체 유형을 정의하는 두 번째 방법은 REDEFINES 키워드를 사용하는 것입니다. 아래 예제 코드에서 데이터 항목 VERS-NUM버전 번호를 포함하는 2바이트 바이너리 정수로 정의됩니다. 두 번째 데이터 항목 VERS-BYTES는 두 문자 영숫자 변수로 정의됩니다.