>백엔드 개발 >C++ >C 구조체 멤버는 기본적으로 0으로 초기화됩니까?

C 구조체 멤버는 기본적으로 0으로 초기화됩니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-15 06:06:12683검색

Are C   Struct Members Initialized to Zero by Default?

C 구조체의 멤버는 기본적으로 0으로 초기화됩니까?

C 구조체의 초기화되지 않은 멤버 값은 0이 될 수 없습니다. 이를 명시적으로 초기화하려면 멤버의 경우 초기화 목록을 사용하세요.

struct Snapshot
{
    double x; 
    int y;
};

Snapshot s = {0, 0}; // Explicitly initialize members to 0

또는 구조체를 초기화할 수도 있습니다. {} 구문 사용:

Snapshot s = {}; // Value initializes all members to 0

값 초기화에 {}를 사용하면 중첩된 구조체에 대해서도 재귀적으로 작동합니다.

struct Parent { Snapshot s; };
Parent p = {}; // Value initializes both p and p.s to 0

구조체에 생성자가 있는 경우 명시적으로 초기화해야 합니다. 해당 생성자의 멤버:

struct Snapshot {
    int x;
    double y;
    Snapshot(): x(0), y(0) { } // Initialize members in the constructor
};

또는 기본값 초기화 구문을 사용할 수 있습니다. x(), y()를 사용하여 유형을 무시하고 적절한 초기 값(int의 경우 0, double의 경우 0.0 등)을 할당합니다.

Snapshot(): x(), y() { } // Value initializes both x and y to 0

이는 특히 템플릿에 유용할 수 있습니다.

위 내용은 C 구조체 멤버는 기본적으로 0으로 초기화됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.