반응형

구조체와 공용체

 

 

구조체 여러 데이터 타입의 멤버 변수를 추가하여 정의할 수 있기 때문에

 

공용체를 정의하여 추가할 수 있을 뿐만 아니라 다른 형태의 구조체를 정의하여 추가할 수도 있다.

 

-

 

구조체 안에 다른 구조체 및 공용체를 추가하기 위해서는

 

외부에서 공용체 및 구조체를 정의하여 새로운 구조체 안에 새롭게 추가하여 정의할 수도 있지만

 

내부에서 구조체 및 공용체를 정의하면서 바로 정의할 수도 있다.

 

다음은 구조체와 공용체를 혼용하는 예시이다.

 

-

 

test48.c
0.00MB

 

-

 

 

 

-

 

위의 예시는 구조체 data를 정의하면서 내부적으로 공용체를 정의하여

 

내부에 서로 다른 구조체 2개를 정의한다.

 

자세히 보면 같은 데이터 크기를 갖는 구조체 두 개를 멤버로 갖는 공용체를 정의한 것으로 

 

결과적으로 제일 안쪽에 있는 구조체의 크기로 전체 구조체 data의 크기가 된다.

 

따라서 구조체 data의 내부에 있는 구조체 두 개에서 각각 멤버 변수명이 서로 다르지만

 

결과적으로 같은 메모리 공간을 공유하기 때문에 서로 다른 변수 이름으로 같은 값을 갖게 되는 것이다.

반응형

'시작하지 말았어야 했던 것 > C언어 기본 문법' 카테고리의 다른 글

포인터  (0) 2021.02.06
26. 열거형  (0) 2021.02.01
24. 공용체  (0) 2021.02.01
23. 비트 필드  (0) 2021.02.01
22. 구조체 초기화  (0) 2021.02.01

+ Recent posts