>  기사  >  백엔드 개발  >  함수 수준 정적 변수는 전역 및 지역 변수와 비교하여 할당 및 초기화에서 어떻게 다릅니까?

함수 수준 정적 변수는 전역 및 지역 변수와 비교하여 할당 및 초기화에서 어떻게 다릅니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-15 10:25:02160검색

How Do Function-Level Static Variables Differ in Allocation and Initialization Compared to Global and Local Variables?

함수 수준 정적 변수 할당 및 초기화: 심층 분석

전역 변수는 일반적으로 프로그램 시작 시 할당 및 초기화되지만 할당은 함수 수준 정적 변수의 초기화는 좀 더 미묘한 패턴을 따릅니다.

함수 수준 정적 변수가 할당되는 경우

전역 변수와 달리 함수 수준 정적 변수는 함수가 처음 입력될 때 할당됩니다. 이는 함수가 호출될 때마다 발생하는 지역 변수 할당과 대조됩니다.

함수 수준 정적 변수가 초기화될 때

함수 초기화 -레벨 정적 변수는 함수가 처음 입력될 때 한 번만 발생합니다. 이는 static 키워드가 여러 함수 호출에서 변수의 값을 유지하도록 보장하기 때문입니다.

명확성을 위한 예

다음 코드 조각을 고려하세요.

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

프로그램 실행이 처음으로 doSomething 함수에 도달하면 전역 변수가 함수의 스택 프레임에 할당됩니다. 그런 다음 true로 초기화됩니다. doSomething 함수에 대한 후속 호출에서는 전역 변수가 이미 할당 및 초기화되고 해당 값이 보존됩니다.

결론

요약하면 함수 수준 정적 변수는 함수가 처음 입력될 때 할당되고 첫 번째 입력 중에 한 번만 초기화됩니다. 이 동작은 전역 변수 및 지역 변수와 다르며 함수 내에서 영구 데이터를 유지하기 위한 독특하고 유용한 메커니즘을 제공합니다.

위 내용은 함수 수준 정적 변수는 전역 및 지역 변수와 비교하여 할당 및 초기화에서 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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