Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

함수 수준 정적 변수가 C/C++에서 언제 초기화됩니까?


정적 변수는 static 키워드를 사용하여 정의할 수 있습니다. 프로그램이 실행되는 동안 메모리에 남아 있는 변수입니다. 즉, 수명은 전체 프로그램 실행입니다. 이것은 함수가 실행될 때만 메모리에 남아 있고 함수가 끝나면 소멸된다는 점에서 자동 변수와 다릅니다.

함수 수준의 정적 변수는 프로그램 로드 시 메모리가 할당되지만 처음 사용할 때 생성 및 초기화됩니다.

C에서 함수 수준의 정적 변수를 보여주는 프로그램은 다음과 같습니다. -

예시

#include<stdio.h>
int func() {
   static int num = 0;
   num += 5;
   return num;
}
int main() {
   for(int i = 0; i<5; i++) {
      printf("%d\n", func());
   }
   return 0;
}

출력

위 프로그램의 출력은 다음과 같습니다.

5
10
15
20
25

이제 위의 프로그램을 이해합시다.

함수 func()에는 0으로 초기화된 정적 변수 num이 포함되어 있습니다. 그런 다음 num이 5만큼 증가하고 해당 값이 반환됩니다. 이를 보여주는 코드 스니펫은 다음과 같습니다.

int func() {
   static int num = 0;
   num += 5;
   return num;
}

main() 함수에서 func() 함수는 for 루프를 사용하여 5번 호출되고 출력된 num 값을 반환합니다. num은 정적 변수이므로 프로그램이 실행되는 동안 메모리에 남아 있으며 일관된 값을 제공합니다. 이를 보여주는 코드 스니펫은 다음과 같습니다.

int main() {
   for(int i = 0; i<5; i++) {
      printf("%d\n", func());
   }
   return 0;
}