Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[238] Re:Re:union을 써 보세요.
김백일 [cedar] 3215 읽음    2002-01-22 10:30
산적 님이 쓰신 글 :
: 죄송한데요....
:
: 설명좀 부탁 드립니다.
:
: 어떻게 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
로 억세스할 수 있습니다.

이해가 되셨기를....

+ -

관련 글 리스트
229 [급질문] 숫자 값이 100이상인데..... 넣어야 될값은 문자형 두자리에 넣어야 되여.. 산적 3506 2002/01/21
230     Re:좀더 질문의 의도를 밝혀주세요..(냉무) 남병철.레조 3006 2002/01/21
232         다시 질문... 산적 2201 2002/01/21
233             union을 써 보세요. 김백일 3190 2002/01/21
234                 Re:union을 써 보세요. 산적 2049 2002/01/21
238                     Re:Re:union을 써 보세요. 김백일 3215 2002/01/22
239                         김백일님 많은 도움이 됐습니다. 진심으로 감사드립니다. 꾸벅... 산적 3098 2002/01/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.