티스토리 뷰
728x90
위키피디아의 정의에 따르면 union은 각 데이터 멤버가 메모리 상에서 같은 위치에서 시작한다는 점을 제외하면 struct와 거의 동일하다. struct는 각 데이터 타입에 따라 별도의 메모리 공간에 멤버를 저장한다. 따라서 이들은 size 면에서 차이가 난다. 구체적으로 64 bit platform에서는 union의 size는 char*의 size와 같다. 또한 struct와 동일하게, 모든 멤버들은 기본적으로 public이다. union은 다양한 데이터 타입에 의해 자주 사용되는 메모리 위치에 접근을 허용할 때 주로 사용된다.
대부분의 경우 union은 struct 안에 래핑하여 사용되고, struct의 한 멤버가 union의 어떤 요소에 접근할 수 있는 지 알려주는 용도로 사용된다. 예를 들면 다음과 같다.
struct _mydata {
int which_one;
union _data {
int a;
float b;
char c;
} foo;
} bar;
switch (bar.which_one)
{
case INTEGER : /* access bar.foo.a;*/ break;
case FLOATING : /* access bar.foo.b;*/ break;
case CHARACTER: /* access bar.foo.c;*/ break;
}
'Etc.' 카테고리의 다른 글
컴파일러와 인터프리터의 차이 (0) | 2021.10.10 |
---|---|
스택 오버플로우 공격 (0) | 2021.10.05 |
<DCinside> 해외주식갤러리 ticker별 언급 횟수 (2021-02-04~) (0) | 2021.02.05 |
<DCinside> 해외주식갤러리 ticker별 언급 횟수 (2021-01-15~) (1) | 2021.02.02 |
<DCinside> 미국주식갤러리 ticker별 언급 횟수 (2020-03-18~) (0) | 2021.02.01 |
댓글