:: 소스를 보다보면 Union 이라는 키워드를 종종 보게 된다.
Union(공용체)은 구조체와 비슷지만 메모리를 공유한다는게 다르다.
1)
struct sStruct
{
int m_iTemp;
short m_nTemp[2];
};
2)
union uUnion
{
int m_iTemp;
short m_nTemp[2];
};
:: 1) 의 구조체의 맴버는 각각의 메모리를 사용하며 m_iTemp의 값을 변경하더라고 m_nTemp 의 값은
변하지 않는다. /// sizeof(sStruct) == 8;
하지만 2) 은 공용체로 맴버간의 메모리를 서로 공유하여 사용하게된다.. 고로
m_iTemp 의 4byte는 m_nTemp[0] 의 2byte 와 m_nTemp[1]의 2byte 와 공유하므로
m_iTemp나 m_nTemp의 값을 변경하게되면 다른 맴버의 값도 변하게 된다.
/// sizeof(uUnion) == 4;
뭐.. 다음과 같은 상황 에서 쓰기는 하지만 본인은 머리가 나쁜관계로 해깔려서 쓰지는 않음.. ㅋ
struct sInfo
{
...
union
{
int x, y, z, w;
int xyzw[4];
}
...
}
댓글 없음:
댓글 쓰기