2010년 7월 26일 월요일

공용체 Union

:: 소스를 보다보면 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];

   }

   ...

}

 

댓글 없음:

댓글 쓰기