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

C 공용체(Union) 완벽 이해: 정의, 사용법, 구조체와의 비교

C 공용체(Union) 완벽 이해

C 공용체의 정의, 생성, 접근 방법을 배우고, 메모리 레이아웃과 용도에서 구조체와 어떻게 다른지 알아봅니다.

공용체는 C에서 사용자 정의 타입으로, 구조체와 달리 한 번에 멤버 중 하나만 값을 가질 수 있습니다. 이는 메모리 효율적인 데이터 표현과 저수준 프로그래밍에서의 타입 펀칭(type-punning)에 이상적입니다.


공용체 정의하기

union 키워드로 새 타입을 선언합니다. 예:

union Car {
    char name[50];
    int price;
};

위 코드는 50자 문자열 또는 정수 가격을 저장할 수 있는 파생 타입 union Car를 생성합니다.


공용체 변수 생성하기

공용체 정의만으로는 메모리가 할당되지 않습니다. 해당 타입의 변수를 선언하여 사용합니다:

union Car car1, car2, *car3;

정의와 변수 선언을 결합할 수도 있습니다:

union Car {
    char name[50];
    int price;
} car1, car2, *car3;

두 예제 모두 car1, car2는 공용체 인스턴스이고, car3은 공용체 포인터입니다.


공용체 멤버 접근하기

직접 접근은 점(.) 연산자, 포인터 접근은 화살표(->) 연산자를 사용합니다:


공용체 vs 구조체

구조체는 모든 멤버를 위한 공간을 할당하지만, 공용체의 크기는 가장 큰 멤버의 크기와 같습니다. 비교 예제:

#include <stdio.h>
union UnionJob {
    char name[32];
    float salary;
    int workerNo;
} uJob;
struct StructJob {
    char name[32];
    float salary;
    int workerNo;
} sJob;
int main() {
    printf("size of union = %zu bytes\n", sizeof(uJob));
    printf("size of structure = %zu bytes", sizeof(sJob));
    return 0;
}

출력:

size of union = 32
size of structure = 40

구조체는 40바이트(32+4+4)를 차지하지만, 공용체는 가장 큰 멤버인 name[32]의 크기인 32바이트만 차지합니다. 모든 공용체 멤버는 같은 메모리 영역을 공유합니다.


실전 예제: 멤버 덮어쓰기

#include <stdio.h>
union Job {
    float salary;
    int workerNo;
} j;
int main() {
    j.salary = 12.3;
    j.workerNo = 100; // 이전 값 덮어씀
    printf("Salary = %.1f\n", j.salary);
    printf("Number of workers = %d", j.workerNo);
    return 0;
}

출력:

Salary = 0.0
Number of workers = 100

salary와 workerNo가 같은 메모리를 공유하므로, 하나에 쓰면 다른 하나는 지워집니다.


실제 활용 사례는 Why do we need C Unions?를 참조하세요.

C 언어

  1. Java Enum 완전 정복: Enum과 Enum 클래스 종합 가이드
  2. Java Enum 생성자 완벽 해설: 실전 예제로 이해하기
  3. C 공용체(Union) 완전 이해: 메모리 공유, 타입 펀칭, 실전 활용
  4. 공압 밸브 사이징 마스터하기: 실용 가이드
  5. 제조업 AI 시장, 2026년까지 48억 달러 규모로 연평균 28.1% 성장 전망
  6. 알루미늄 바 재고 안전하고 정밀하게 절단하는 전문 가이드
  7. 파이프 유니온(Pipe Union) 정의와 장점: 배관 분해·이종 금속 부식 방지 해결사
  8. 상업용 에어컨 적정 크기 선정 전문가 가이드: 최적 성능 위한 올바른 선택
  9. 총기 제작용 선반 크기 선택 완벽 가이드
  10. 에어 리시버 적정 크기 선택: 성능 및 효율 최적화