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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[875] 구조체 초기화
타락천사 [rain622] 11796 읽음    2009-03-23 11:22
구조체 초기화 예제. initialize struct

안쓰면 자꾸 잊어 버려서.. 기록...





// 예제 구조체
struct TEST_HEADER
{
    unsigned short packet_type;
    unsigned short header_size;

    int acode;
    int detail_type;
};

struct DD_BODY
{
    char id[4];

    unsigned char test1;
    unsigned char ff;
    unsigned char cr;
    unsigned char lf;
};

struct DD_PACKET
{
    TEST_HEADER hdr;

    DD_BODY body;
};
//---------------------------------------------------------------------------
    // 단순 구조체 초기화 예제 1
    TEST_HEADER MyHeader = {1010,     // packet_type
                        1020,    // header_size
                        1000030, // acode
                        1000040  // detail_type
                        };

    // 단순 구조체 초기화 예제 2
    DD_BODY MyBody = {'test', // test1
                    10,     // ff
                    20,     // cf
                    30,     // cr
                    40      // lf
                    };

    // 복합 구조체 초기화 예제
    DD_PACKET MyPacket = {  // TEST_HEADER hdr
                            {1010,     // packet_type
                                1020,    // header_size
                                1000030, // acode
                                1000040  // detail_type
                            },
                            // DD_BODY
                            {'test', // test1
                                10,     // ff
                                20,     // cf
                                30,     // cr
                                40      // lf
                            }
                    };

PS1: Delphi 에서는       MyHeader = (packet_type=1010, ... 와 같이 값에 변수명을 대입 할 수 있으나
C/C++ 에선 값 입력 순서에 따라 변수에 대입됩니다..
순서에 따라 {} 를 배치하면 구조체가 몇겹이 되었든 초기화 할 수 있습니다.

PS2: 정확한 표현은, "구조체 초기값 설정" 입니다..
타락천사 [rain622]   2009-03-25 16:14 X
아래의 문자열 초기화 글과 같은 논리 입니다..

구조체는 다음과 같이 초기화 할 수 있습니다.

    TEST_HEADER MyHeader = {0,};
    DD_BODY MyBody = {0,};
    DD_PACKET MyPacket = {0,};  
김상면 [windyboy]   2009-03-27 09:09 X
생성자를 이용하면 보다 유연한 초기화가 가능합니다...
그럼
타락천사 [rain622]   2009-03-27 10:37 X
ㅋㅋㅋㅋㅋㅋ 당연하져..

+ -

관련 글 리스트
875 구조체 초기화 타락천사 11796 2009/03/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.