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

C 언어에서 멤버가 없는 구조체 선언하기 – 크기는 얼마일까?

문제 상황

C 언어에서는 멤버(변수)가 하나도 없는 구조체를 선언할 수 있을까요? 만약 가능하다면, 그렇게 선언된 구조체의 크기는 얼마나 될까요?

해결 방법

네, C 언어에서는 멤버 없이 구조체를 선언하는 것이 허용됩니다. 이렇게 선언한 빈 구조체(empty structure)의 크기는 0이 되며, 이러한 구조체를 '크기가 0인 구조체(zero size structure)'라고 부릅니다.

예제 코드

#include <stdio.h>
// 멤버가 없는 구조체
struct temp{
};
int main(){
    // 구조체 변수 선언
    struct temp T;
    printf("Size of T: %d\n", sizeof(T));
    return 0;
}

출력 결과

위 프로그램에서는 "temp"라는 이름의 구조체를 선언하면서 내부에 어떤 변수도 정의하지 않았습니다. 따라서 "temp"는 멤버가 하나도 없는 구조체입니다.

그다음 main 함수 안에서 구조체 변수 "T"를 선언하고, sizeof() 연산자를 사용하여 "T"가 차지하는 메모리 크기를 출력합니다. 실행 결과는 다음과 같이 0이 나옵니다.

Size of T: 0

참고 사항

다만 주의할 점이 있습니다. ISO C 표준에서는 빈 구조체를 공식적으로 정의하고 있지 않으며, 위와 같은 동작은 GCC(GNU Compiler Collection) 등 일부 컴파일러에서 제공하는 확장 기능입니다. 즉, 컴파일러에 따라 컴파일 오류가 발생하거나 크기가 다르게 처리될 수 있으므로, 실제 프로젝트에서는 사용 중인 컴파일러의 문서를 확인하는 것이 좋습니다.