>백엔드 개발 >C++ >C에서 정적 변수와 전역 변수는 어떻게 초기화됩니까?

C에서 정적 변수와 전역 변수는 어떻게 초기화됩니까?

DDD
DDD원래의
2024-11-08 07:05:021099검색

How are Static and Global Variables Initialized in C  ?

C에서 정적 및 전역 변수 초기화

C에서는 네임스페이스 범위가 있는 정적 및 전역 개체가 C와 다르게 초기화됩니다. 포괄적인 설명:

초기화 단계:

C는 이러한 변수를 세 단계로 초기화합니다.

  1. Zero 초기화: 모든 정적 개체가 설정됩니다. 0으로.
  2. 정적 초기화: 정적 초기화가 포함된 개체가 초기화됩니다.
  3. 동적 초기화: 초기화를 위해 코드 실행이 필요한 개체(비정적 개체)가 초기화됩니다.

주어진 변수 초기화:

코드 조각에서:

  • global_int1은 정적 초기화 중에 5로 초기화됩니다.
  • global_int2는 0 초기화 중에 0으로 초기화됩니다.
  • static_int1은 정적 초기화 중에 4로 초기화됩니다.
  • static_int2는 0 초기화 중에 0으로 초기화됩니다.

저장 및 초기화 값 관리:

컴파일하는 동안 초기화 값은 const가 아닌 한 실행 파일의 "데이터" 세그먼트에 저장됩니다. 이 경우 "텍스트" 세그먼트에 배치됩니다.

시스템은 "데이터" 세그먼트를 메모리에 로드하고 정적 초기화 프로그램을 사용하여 정적 변수를 초기화합니다. 초기화 프로그램이나 동적 초기화 프로그램이 없는 변수는 "bss" 세그먼트에 배치되며 코드 실행 전에 시스템에 의해 0으로 설정됩니다.

C 11에 대한 추가 참고 사항

C 11에서는 constexpr을 도입하여 일부 사용자 정의 함수를 정적 초기화할 수 있습니다. 스레드 지역 변수도 도입되어 초기화 절차가 더욱 복잡해졌습니다.

위 내용은 C에서 정적 변수와 전역 변수는 어떻게 초기화됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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