>백엔드 개발 >C++ >C의 함수 수준 정적 변수는 언제 어떻게 할당되고 초기화됩니까?

C의 함수 수준 정적 변수는 언제 어떻게 할당되고 초기화됩니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-18 02:12:02246검색

When and How Are Function-Level Static Variables in C   Allocated and Initialized?

함수 수준 정적 변수 할당 및 초기화

C에서 함수 수준 정적 변수는 평생 지속되는 데이터 유형입니다. 프로그램의. 전역 변수와 달리 전역 범위에서 선언되지 않고 함수 범위 내에서 선언됩니다. 이는 이러한 변수가 언제 할당되고 초기화되는지에 대한 의문을 제기합니다.

프로그램 시작 시 할당 및 초기화되는 전역 선언 변수와 달리 함수 수준 정적 변수는 첫 번째 호출 시 할당 및 초기화됩니다. 정의된 함수에. 이는 제공된 예제 코드에서 분명하게 드러납니다.

void doSomething() {
  static bool globalish = true;
}

정적 변수 globalish는 doSomething 함수를 처음 호출할 때 초기화됩니다. 그 전에는 해당 값이 정의되지 않았습니다. 이 결과는 서로 다른 범위 내에서 인스턴스화된 객체의 생성 및 소멸과 관련된 이벤트를 인쇄하는 테스트 프로그램을 통해 확인되었습니다.

이러한 동작은 정적 변수가 메모리의 정적 영역에 저장된다는 사실에 기인합니다. 동일한 함수에 대한 모든 호출에서 공유됩니다. 따라서 함수 내에서 명시적으로 수정되지 않는 한 초기값은 호출 전반에 걸쳐 지속됩니다.

위 내용은 C의 함수 수준 정적 변수는 언제 어떻게 할당되고 초기화됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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