Union vs Struct 차이점
1. 메모리 사용
- STRUCT: 모든 멤버가 각자의 메모리 공간을 가짐
- UNION: 모든 멤버가 같은 메모리 공간을 공유
struct Example
{
int a;// 4byte
char b;// 1byte
double c;// 8byte
};//총 13 byte
union Example
{
int a;// 4byte
char b;// 1byte
double c;// 8byte
};//총 8 byte
2. 데이터 접근:
- STRUCT: 모든 멤버에 동시에 다른 값을 저장 가능
- UNION: 한 번에 하나의 멤버만 유효한 값을 가질 수 있음
3. 주요 용도:
- STRUCT: 서로 관련된 다양한 데이터를 그룹화할 때 사용
- UNION: 메모리를 절약하거나 같은 메모리를 다른 방식으로 해석할 때 사용
Union vs Struct 중첩 구조체 사용 예
1. Struct - Struct
struct link1
{
int b;
};
struct link2
{
int a;
link1 strlink;
};
a 접근: link2.a
b 접근: link2.link1.b
*a와 b는 주소값이 다르기 때문에 서로의 값에 영향을 안미침
2. Union - Struct
struct link1
{
bool s1 : 1;
bool s2 : 1;
bool s3 : 1;
bool s4 : 1;
bool s5 : 1;
bool s6 : 1;
bool s7 : 1;
};
union link2
{
DWORD link1_status;
link1 strlink;
};
link1_status 와 strlink(link1)의 주소가 공유되므로,
link1의 전체 값을 알고싶으면 link1_staus로 접근하면되고, link1 개별 변수의 값을 알고 싶으면 link2.link1.s1~s7로 접근하면 됩니다.
이런식으로 union 내부 변수들이 같은 주소값을 쓰는 경우 응용 가능합니다.