Latest web development tutorials

C 조합

연합 메모리에 저장된 동일한 데이터 유형에서 다른 위치로 이동하므로 데이터의 특별한 형태이다.당신은 더 많은 회원들과 노동 조합을 정의 할 수 있지만 시간은 값이 하나의 구성원이 될 수 있습니다. 조합은 효과적인 방식으로 같은 메모리 영역을 사용하는 방법을 제공한다.

노동 조합의 정의

노동 조합을 정의하려면노조 문을 사용하여 유사한 방식으로 구조를 정의해야합니다.연합 문 부재 복수의 새로운 데이터 유형을 정의한다. 다음과 같이 연합 (EU) 문 형식은 다음과 같습니다

union [union tag]
{
   member definition;
   member definition;
   ...
   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

여기서, 모든 멤버가 있기 때문에, 동시에 출력은 본래 단 하나의 부재를 사용한다.