산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C - 조합

노조 동일한 메모리 위치에 다른 데이터 유형을 저장할 수 있는 C에서 사용할 수 있는 특수 데이터 유형입니다. 많은 멤버가 있는 공용체를 정의할 수 있지만 주어진 시간에 하나의 멤버만 값을 포함할 수 있습니다. Union은 동일한 메모리 위치를 다목적으로 사용하는 효율적인 방법을 제공합니다.

연합 정의

Union을 정의하려면 union을 사용해야 합니다. 구조를 정의할 때와 같은 방식으로 문을 엽니다. Union 문은 프로그램에 대해 둘 이상의 멤버가 있는 새 데이터 유형을 정의합니다. Union 성명서의 형식은 다음과 같습니다 -

union [union tag] {
   member definition;
   member definition;
   ...
   member definition;
} [one or more union variables];  

통합 태그 선택적이며 각 멤버 정의는 int i와 같은 일반 변수 정의입니다. 또는 float f; 또는 다른 유효한 변수 정의. 공용체 정의 끝에서 마지막 세미콜론 앞에 하나 이상의 공용체 변수를 지정할 수 있지만 선택 사항입니다. 다음은 세 개의 멤버 i, f 및 str -

을 갖는 Data라는 공용체 유형을 정의하는 방법입니다.
union Data {
   int i;
   float f;
   char str[20];
} data;  

이제 Data 변수 type은 정수, 부동 소수점 숫자 또는 문자열을 저장할 수 있습니다. 이는 단일 변수, 즉 동일한 메모리 위치를 사용하여 여러 유형의 데이터를 저장할 수 있음을 의미합니다. 요구 사항에 따라 공용체 내에서 내장 또는 사용자 정의 데이터 유형을 사용할 수 있습니다.

Union이 차지하는 메모리는 Union의 가장 큰 구성원을 보유하기에 충분히 클 것입니다. 예를 들어 위의 예에서 Data type은 문자열이 차지할 수 있는 최대 공간이기 때문에 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

조합 회원 액세스

조합의 구성원에 액세스하려면 구성원 액세스 연산자(.)를 사용합니다. . 멤버 액세스 연산자는 유니온 변수 이름과 액세스하려는 유니온 멤버 사이의 마침표로 코딩됩니다. union 키워드를 사용합니다. 공용체 유형의 변수를 정의합니다. 다음 예제는 프로그램에서 공용체를 사용하는 방법을 보여줍니다 -

라이브 데모
#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

여기에서 i 값이 및 f 변수에 할당된 최종 값이 메모리 위치를 차지했기 때문에 Union의 멤버가 손상되었으며 이것이 str 값이 회원이 매우 잘 인쇄되고 있습니다.

이제 유니온을 갖는 주요 목적인 한 번에 하나의 변수를 사용할 동일한 예를 다시 한 번 살펴보겠습니다. -

라이브 데모
#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

여기에서는 한 번에 한 멤버를 사용하기 때문에 모든 멤버가 매우 잘 인쇄되고 있습니다.


C 언어

  1. 마이크로프로세서
  2. 연산 증폭기 데이터
  3. C++ 데이터 유형
  4. C 데이터 유형
  5. C 유니온
  6. 파이썬 데이터 유형
  7. C - 데이터 유형
  8. C++ 데이터 구조
  9. C++의 데이터 추상화
  10. C++의 데이터 캡슐화