본문 바로가기
Develop/C

19-3 C 언어의 구조체와 비슷한 공용체 예제

by 구운밤이다 2016. 8. 10.
728x90
반응형

2016/08/01 - [IT/C언어] - 19-2 C 언어의 구조체의 포인터 예제!

이번 시간에는 구조체와 비슷하지만 다른 공용체를 알아보도록 하겠습니다! 공용체는 struct 대신에 union을 쓰면됩니다 구조체와 비슷하긴 하지만! 주소 할당에서 차이점이 있어요 즉, 구조체멤버들마다 주소값이 다르고! 공용체한 주소를 공유해서 같이 사용합니다 그럼 예제를 통해 알아보도록 할게요!

먼저 구조체를 봅시다!



typedef struct pos {

    int n1;

    int n2;

    double n3;

};

이런 구조체가 있다고 칩시다! 여기서 sizeof를 이용해서 pos의 크기를 계산해 보면! int + int + double 으로 16이라는 결과가 나옵니다 하지만 공용체를 쓰면 가장 큰 멤버의 크기가 공용체의 크기로 결정됩니다! 저 위의 예시를 공용체로 선언했을 경우에는 크기가 8이 되겠죠? 이번엔 주소를 알아보겠습니다!

pos point;

printf("%p", &point.n1);

printf("%p", &point.n2);

printf("%p", &point.n3);

각각의 주소를 출력해보면

0x7fff5fbff780

0x7fff5fbff784

0x7fff5fbff788

이렇게 결과가 나옵니다 int 형이기 때문에 4씩 차이가 나게되죠! 그렇지만 여기서 구조체 대신 union을 쓰게 되면 모두 같은 결과가 나옵니다!


모르는 것은 댓글이나 쪽지로 남겨주시면 성심 성의껏 답변해드리겠습니다!! 댓글공감구독(이웃추가)는 블로거에게 큰 힘이 됩니다! 부탁드리면서 이번 포스팅을 마치도록 하겠습니다! 지금까지 딘또였습니다.

728x90
반응형

댓글