Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어의 익명 공용체(Anonymous Union)와 구조체(Structure) 완벽 정리

C 언어의 익명 공용체와 구조체란?

이번 글에서는 C 언어의 익명 공용체(anonymous union)익명 구조체(anonymous structure)가 무엇인지 자세히 살펴보겠습니다.

익명 공용체와 구조체는 이름 그대로 이름이 없는(unnamed) 공용체와 구조체를 의미합니다. 이름이 없기 때문에 이들만으로는 독립적인 변수(객체)를 생성할 수 없으며, 대신 다른 구조체나 공용체 내부에 중첩(nested)되는 형태로 활용됩니다.

익명 공용체와 구조체의 기본 문법

익명 공용체와 구조체의 기본적인 선언 형태는 다음과 같습니다.

struct {
    datatype variable;
    ...
};
union {
    datatype variable;
    ...
};

예제 코드

아래 예제에서는 point라는 이름의 구조체를 선언하고, 그 안에 좌표 값인 x, y 두 멤버를 가지는 익명 구조체를 포함시켰습니다. 익명 구조체나 공용체의 가장 큰 특징은 멤버에 별도의 이름 단계를 거치지 않고 곧바로 접근할 수 있다는 점입니다.

#include<stdio.h>
struct point {
    // 익명 구조체
    struct {
        int x;
        int y;
    };
};
main() {
    struct point pt;
    pt.x = 10;
    pt.y = 20;
    printf("Point (%d,%d)", pt.x, pt.y); // 익명 멤버에 직접 접근 가능
}

실행 결과

Point (10,20)

위 코드에서 주목할 부분은 pt.x, pt.y처럼 익명 구조체의 멤버에 곧바로 접근했다는 점입니다. 만약 내부 구조체에 이름이 있었다면 pt.inner.x와 같이 중간 단계를 거쳐야 하겠지만, 익명 구조체를 사용하면 이러한 접근 과정이 한 단계 줄어들어 코드가 훨씬 간결해집니다. 이처럼 익명 공용체와 구조체는 중첩 데이터 구조를 깔끔하게 표현하고 싶을 때 유용하게 사용할 수 있습니다.