C++ struct 멤버 변수를 전부 0으로 초기화 하려면 어떻게 해야되나요?

조회수 21721회

발생하는 문제 및 실행환경

객체 멤버 변수를 전부 0으로 초기화 해주는 더 쉬운 방법이 없을까요? 지금은

소스 코드

struct Snapshot
{
    double x; 
    int   y ;
};

int main(){
    struct Snapshot mystruct;
    mystruct.x = 0;
    mystruct.y = 0;
}

이렇게 일일이 초기화 해주고 있는데 처음 선언할 때 x,y을 바로 0으로 초기화하려면 어떡하죠?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    구조체를 선언과 동시에 초기화하는 방법은 아주 많습니다. 여러 가지 예를 보여드릴 테니 코드에 주석을 봐주세요

    Snapshot s; // 초기화 없이 선언
    Snapshot s = {}; // 모든 멤버를 초기화 - 전부 0으로 설정됨
    

    멤버가 int나 long같은 기본 타입이 아니라 구조체가 오더라도 초기화하는 방식은 같습니다.

    struct Parent { Snapshot s; }; //Snapshot을 멤버로 가짐
    Parent p; // 초기화 없이 선언
    Parent p = {}; // 모든 멤버를 초기화 - {x,y}가 전부 0으로 설정됨
    

    0이나 그 외에 값으로 초기화하고 싶은 경우, 아니면 멤버로 동적 할당할 배열이 있는 경우는 생성자를 만들어 생성과 동시에 초기화할 수 있습니다.

    struct Snapshot {
        int x;
        double y;
        int *myarr;
        Snapshot():x(0),y(0) //x, y에 0을 초기화하는 생성자
        {
            myarr = new int[30];
        }
    };
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)