산적 님이 쓰신 글 :
: 죄송한데요....
:
: 설명좀 부탁 드립니다.
:
: 어떻게 unsigned char 형에 담기는지... ㅜ.ㅜ
:
union에 대해서는 여러 C관련 책들에 설명이 많이 나와있습니다.
굳이 설명하자면...
문법은 struct와 유사하지만,
다른 점은 같은 메모리 영역을 공유하는 구조라는 것이죠.
union myunion {
unsigned short i;
unsigned char c[2];
} mu;
에서는 i(16bits)와 c[2](8*2bits)가 동일한 메모리를 공유합니다.
다른 예를 더 들어보죠.
struct TMessage {
Cardinal Msg;
union {
struct {
Word WParamLo;
Word WParamHi;
Word LParamLo;
Word LParamHi;
Word ResultLo;
Word ResultHi;
};
struct {
int WParam;
int LParam;
int Result;
};
};
} ;
빌더에서 Windows API를 사용할 때 가끔씩 쓰게되는 TMessage 구조체입니다.
여기서 Word는
typedef unsigned short Word;
로 정의된 16비트 정수입니다.
그러니까 32비트 정수인 WParam, LParam, Result 각각의
하위, 상위(IBM PC에서는 항상 하위->상위 순서임을 유의하세요!) 16비트 부분을
WParamLo, WParamHi, LParamLo, LParamHi, ResultLo, ResultHi
로 억세스할 수 있습니다.
이해가 되셨기를....
|