> 백엔드 개발 > C++ > C와 C에서 자동 구조와 배열은 어떻게 부분적으로 초기화됩니까?

C와 C에서 자동 구조와 배열은 어떻게 부분적으로 초기화됩니까?

DDD
풀어 주다: 2024-12-19 05:32:21
원래의
185명이 탐색했습니다.

How are Automatic Structures and Arrays Partially Initialized in C and C  ?

C 및 C에서 자동 구조 및 배열의 ​​부분 초기화

GNU C 참조 매뉴얼에는 구조 변수가 초기화되지 않으면 구성원의 가치는 불확실합니다. 그러나 표준에서는 구조체나 배열의 부분 초기화를 정의하지 않습니다.

부분 초기화 용어

"부분 초기화"는 전체가 아닌 일부 초기화를 제공하는 것을 의미합니다. 집계(배열 또는 구조).

자동 구조 및 초기화 규칙 배열

C 및 C 표준은 자동 구조 및 배열의 ​​초기화에 대해 다음 규칙을 지정합니다.

  • 집계가 완전히 초기화된 경우(즉, 모든 요소 또는 멤버), 초기화된 요소/멤버에는 지정된 값이 할당되고 나머지 요소/멤버는 0으로 초기화됩니다(정수 유형의 경우). NULL 초기화(포인터 유형의 경우).
  • 집계가 초기화되지 않으면 모든 요소/멤버가 불확실합니다.

부분 초기화 동작

부분 초기화가 표준에 명시적으로 정의되어 있지 않더라도 모든 주류 컴파일러는 다음을 따릅니다. 동작:

  • 자동 배열의 경우 배열 크기보다 이니셜라이저 수가 적으면 초기화되지 않은 요소는 0으로 초기화됩니다.
  • 자동 구조의 경우 이니셜라이저 수가 적으면 초기화되지 않은 멤버는 구조체 멤버 수보다 값이 초기화됩니다. C에서 이는 클래스 데이터 멤버는 기본적으로 초기화되고 클래스가 아닌 데이터 멤버는 0으로 초기화됨을 의미합니다.

다음 C 코드는 구조를 부분적으로 초기화합니다.

struct S {
    int a;
    char* b;
    int c;
};

S s = {1, "asdf"};
로그인 후 복사

이 예에서 s.a는 다음과 같이 초기화됩니다. 1, s.b는 "asdf"로 초기화되고, s.c는 명시적으로 초기화되지 않기 때문에 0으로 초기화됩니다.

위 내용은 C와 C에서 자동 구조와 배열은 어떻게 부분적으로 초기화됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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