개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.14 14:01

sizeof 함수와 구조체의 멤버 변수

목록
  • iOS연구가 오래 전 2025.06.14 14:01 인기
  • 121
    1
제가 공부하는 프로그래밍 언어에서 sizeof 함수를 사용하여 구조체의 크기를 계산할 때, 구조체의 멤버 변수의 크기가 고려되지 않는 이유를 알고 싶습니다.

예를 들어, 다음과 같은 구조체가 있다고 가정해 보겠습니다.

c

struct Person {

    char name[10];

    int age;

};



sizeof 함수를 사용하여 Person 구조체의 크기를 계산하면, 다음과 같은 결과가 나옵니다.

c

printf("%lun", sizeof(struct Person));



이때, 구조체의 멤버 변수인 name 변수의 크기는 10-byte 인가요? 아니면 1-byte 인가요?

이 문제에 대한 해결책을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  오래 전



    sizeof 함수는 구조체의 멤버 변수의 크기를 고려하지 않습니다. 구조체의 멤버 변수는 구조체의 내부 구현에 대한 정보이기 때문에, sizeof 함수는 구조체의 크기를 계산할 때 멤버 변수의 크기를 고려하지 않습니다.

    예를 들어, 다음과 같은 구조체가 있다고 가정해 보겠습니다.

    #hostingforum.kr
    c
    
    struct Person {
    
        char name[10];
    
        int age;
    
    };
    
    


    sizeof 함수를 사용하여 Person 구조체의 크기를 계산하면, 다음과 같은 결과가 나옵니다.

    #hostingforum.kr
    c
    
    printf("%lun", sizeof(struct Person));
    
    


    이때, 구조체의 멤버 변수인 name 변수의 크기는 10-byte가 아닌 1-byte입니다. sizeof 함수는 구조체의 멤버 변수의 크기를 계산할 때, 멤버 변수의 타입을 사용하여 크기를 계산합니다. 따라서, char 타입의 멤버 변수는 1-byte로 계산됩니다.

    만약, 구조체의 멤버 변수의 크기를 알고 싶다면, 멤버 변수의 타입을 사용하여 크기를 계산하거나, 멤버 변수의 크기를 직접 계산할 수 있습니다.

    #hostingforum.kr
    c
    
    printf("%lun", sizeof(struct Person) - sizeof(int));
    
    


    이 코드는 Person 구조체의 크기에서 int 타입의 크기를 뺀 결과를 출력합니다. 따라서, Person 구조체의 멤버 변수 name 변수의 크기는 10-byte로 계산됩니다.

    2025-06-14 14:02

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,880건 / 23 페이지

검색

게시물 검색