강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

유다영님의 프로필 이미지
유다영

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

C언어: 공용체(union)

Union의 재사용과 관련한 질문

해결된 질문

작성

·

66

0

안녕하세요 union 관련하여 질문드립니다.

image.png

예제 1에서 num.floating = 3.14 재사용하면서 덮어쓰기처럼 되었기에 그 밑의 num.integer가 쓰레기값이 되었다고 설명주셔서 이해하였습니다.

 

image.png

 

그런데 예제 2에서 data.integer를 통해 재사용하였는데 그 밑의 sizeof(data.character)값이 1 bytes로 출력될 수 있는지 궁금합니다.

저는 data.integer이 값을 할당한 직후기 때문에 sizeof(data.character)도 4 bytes로 출력될 것으로 예상했습니다.

 

감사합니다.

답변 1

1

주말코딩님의 프로필 이미지
주말코딩
지식공유자

질문이 너무 훌륭하십니다.

 

제가 설명을 올린대로, 공용체(union)에서는 모든 멤버가 같은 메모리 공간을 공유합니다. 그래서 data.integer = 65;로 값을 변경하면 data.characterdata.integer가 가리키는 메모리 공간이 같기 때문에 data.character의 값도 변경됩니다.

 

그런데 sizeof 연산자는 할당된 값과 상관없이 변수의 자료형 크기를 알려줍니다. 그래서 char 자료형의 크기는 항상 1byte로 리턴됩니다. 값이나 메모리 공유 여부와 상관없이 "자료형" 기준입니다.

유다영님의 프로필 이미지
유다영

작성한 질문수

질문하기