C 조합
연합 메모리에 저장된 동일한 데이터 유형에서 다른 위치로 이동하므로 데이터의 특별한 형태이다.당신은 더 많은 회원들과 노동 조합을 정의 할 수 있지만 시간은 값이 하나의 구성원이 될 수 있습니다. 조합은 효과적인 방식으로 같은 메모리 영역을 사용하는 방법을 제공한다.
노동 조합의 정의
노동 조합을 정의하려면노조 문을 사용하여 유사한 방식으로 구조를 정의해야합니다.연합 문 부재 복수의 새로운 데이터 유형을 정의한다. 다음과 같이 연합 (EU) 문 형식은 다음과 같습니다
union [union tag] { member definition; member definition; ko. member definition; } [one or more union variables];
노조 태그는 선택 사항이며,모든 구성원의 정의는 내가 int로서 변수의 표준 정의입니다 또는 F를 떠 또는 다른 유효한 변수 정의. 일반적인 신체 정의 마지막 세미콜론이 끝나기 전에, 당신은 선택 사항입니다 노조 변수 중 하나 이상을 지정할 수 있습니다. 데이터라는 일반적인 체형의 다음과 같은 정의, I, F 및 STR 세 멤버가있다 :
union Data { int i; float f; char str[20]; } data;
이제, 변수데이터 유형은 정수, 부동 소수점 또는 문자열을 저장할 수 있습니다.이 변수 (동일한 메모리 위치)는 다양한 유형의 데이터를 복수 저장할 수있는 것을 의미한다. 필요에 따라 일반적인 신체의 모든 내장 또는 사용자 정의 데이터 형식을 사용할 수 있습니다.
노동 조합은 노동 조합의 가장 큰 회원에 의해 점유 충분한 저장 메모리가 있어야합니다. 예를 들어, 위의 예에서, 데이터는 각각의 부재 때문에, 캐릭터의 점유 공간이 가장 크고, 메모리 공간의 20 바이트를 차지한다. 위의 조합을 보여줍니다 다음 예제는 총 메모리 크기를 점령 :
#include <stdio.h> #include <string.h> union Data { int i; float f; char str[20]; }; int main( ) { union Data data; printf( "Memory size occupied by data : %d\n", sizeof(data)); return 0; }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
Memory size occupied by data : 20
액세스 조합원
공통 회원국에 액세스하기 위해, 우리는멤버 액세스 연산자 (.)를 사용.회원 액세스 연산자 사이에 액세스 할 수있는 기간 변수 이름과 우리 노동 조합의 조합원이다. 당신은 변수를조합 조합 유형을 정의하는 키워드를 사용할 수 있습니다.다음은 노동 조합의 사용을 보여줍니다
#include <stdio.h> #include <string.h> union Data { int i; float f; char str[20]; }; int main( ) { union Data data; data.i = 10; data.f = 220.5; strcpy( data.str, "C Programming"); printf( "data.i : %d\n", data.i); printf( "data.f : %f\n", data.f); printf( "data.str : %s\n", data.str); return 0; }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
data.i : 1917853763 data.f : 4122360580327794860452759994368.000000 data.str : C Programming
값이 그대로 출력하는 이유STR 회원 인 지난 점유 메모리 위치의 변수에 할당하기 때문에 여기에 우리가, 손상 i와f를 조합 구성원의 값을 볼 수 있습니다. 이제 하나의 동일한 인스턴스를 살펴 보자, 우리는 동시에 단지 하나의 변수를 사용하여이 때, 또한 유니온을 사용하는 주요 목적을 보여
#include <stdio.h> #include <string.h> union Data { int i; float f; char str[20]; }; int main( ) { union Data data; data.i = 10; printf( "data.i : %d\n", data.i); data.f = 220.5; printf( "data.f : %f\n", data.f); strcpy( data.str, "C Programming"); printf( "data.str : %s\n", data.str); return 0; }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
data.i : 10 data.f : 220.500000 data.str : C Programming
여기서, 모든 멤버가 있기 때문에, 동시에 출력은 본래 단 하나의 부재를 사용한다.