반응형
공용체 : 공간을 share한다. 가장 큰 멤버변수의 크기로 메모리가 할당된다. 잘 쓰이진 않는다.
union JobUnion {
char name[32];
float salary;
int workerId;
};
struct JobStruct {
char name[32];
float salary;
int workerId;
};
int main() {
JobUnion uJob;
JobStruct sJob;
// union의 경우엔 가장 큰 멤버의 크기로 나온다. 메모리가 공유된다.
cout << sizeof(uJob) << endl;
// struct의 경우엔 x >= 40 의 값이 나오게 된다. 운영체제에 따라 넉넉한 크기로 나올 수도 있으나, 전체 사이즈보다 작게 나오진 않는다.
cout << sizeof(sJob) << endl;
}
----------------------
output
32
40
union Union_ {
int a;
int b;
};
struct Struct_ {
int a;
int b;
};
int main() {
Union_ u;
Struct_ s;
u.a = 1;
u.b = 9;
s.a = 1;
s.b = 9;
cout << u.a << endl;
cout << u.b << endl;
cout << s.a << endl;
cout << s.b << endl;
}
-------------------------
output
9
9
1
9
Union은 같은 영역을 공유하게 되기 때문에, 데이터가 9로 덮어씌워져서 결국엔 9만 출력되는 것을 볼 수 있다.
[ 공용체 덮어써지는 것에 대해 알아둬야할 주의점!! ]
https://dojang.io/mod/page/view.php?id=455
반응형
'[C++]' 카테고리의 다른 글
[C++] ENUMERATION (0) | 2021.06.24 |
---|---|
[C++] 구조체 크기 관련 (0) | 2021.06.23 |
[C++] 구조체와 포인터 (0) | 2021.06.22 |
[C++] 포인터 배열 (0) | 2021.06.22 |
[C++] 배열 포인터 (0) | 2021.06.22 |