반응형
구조체와 공용체
구조체는 여러 데이터 타입의 멤버 변수를 추가하여 정의할 수 있기 때문에
공용체를 정의하여 추가할 수 있을 뿐만 아니라 다른 형태의 구조체를 정의하여 추가할 수도 있다.
-
구조체 안에 다른 구조체 및 공용체를 추가하기 위해서는
외부에서 공용체 및 구조체를 정의하여 새로운 구조체 안에 새롭게 추가하여 정의할 수도 있지만
내부에서 구조체 및 공용체를 정의하면서 바로 정의할 수도 있다.
다음은 구조체와 공용체를 혼용하는 예시이다.
-
-
-
위의 예시는 구조체 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 |