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

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

DDD
풀어 주다: 2024-12-05 04:36:10
원래의
180명이 탐색했습니다.

Are C   Struct Members Automatically Zero-Initialized?

C에서 구조체 멤버의 값 초기화

다음 구조체를 고려하세요.

struct Snapshot
{
    double x; 
    int y;
};
로그인 후 복사

구조체가 선언된 경우 초기화하지 않고 해당 멤버가 자동으로 다음으로 설정됩니까? 0?

답변:

아니요, 멤버는 자동으로 0으로 초기화되지 않습니다. 0으로 설정하려면 명시적인 초기화가 필요합니다.

Snapshot s = {0,0};
로그인 후 복사

기타 초기화 옵션:

  • 값 초기화({}): 모든 멤버를 기본값으로 초기화합니다(예: 숫자 유형의 경우 0).
Snapshot s = {}; // All members set to 0
로그인 후 복사
  • 기본 생성자: struct에는 멤버 초기화가 포함된 기본 생성자가 있으며 암시적 초기화에 사용됩니다.
struct Snapshot {
    int x = 0;
    double y = 0.0;
};

Snapshot s; // x = 0, y = 0.0
로그인 후 복사
  • 멤버 초기화가 포함된 생성자: 사용자 정의 초기화는 생성자를 사용하여 수행할 수 있습니다. .
struct Snapshot {
    Snapshot(int x, double y) : x(x), y(y) { }
};

Snapshot s(0, 0.0); // x = 0, y = 0.0
로그인 후 복사

참고: 생성자 초기화는 다음과 같은 경우 불가능합니다. 구조체 선언에 존재하는 집계 이니셜라이저 목록입니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿