정적 변수

static의 스토리지 클래스는 정적 변수를 정의합니다. 정적 한정자는 데이터 유형 앞에 표시됩니다.

예제:

int somefunc()
  {
   static int flag=10;
   ...
   return(flag);
  }

정적 변수는 모든 식으로 초기화할 수 있는 단순 로컬 변수와 달리 유형에 해당하는 상수 또는 상수 식에 의해 초기화될 수 있습니다.

정적 변수는 프로그램 실행 순간부터 존재하며 특수 함수 OnInit()가 호출되기 전에 한 번만 초기화됩니다. 초기 값을 지정하지 않으면 정적 저장소 클래스의 변수가 0의 초기 값을 가져갑니다.

로컬 변수 - 정적 키워드로 선언된 -는 함수의 수명 동안 해당 값을 유지합니다. 각 다음 함수 호출에서 이러한 로컬 변수는 이전 호출 중에 가졌던 값을 포함합니다.

함수의 형식 매개 변수를 제외한 블록의 모든 변수는 정적으로 정의할 수 있습니다. 로컬 수준에서 선언된 변수가 정적 변수가 아닌 경우 해당 변수에 대한 메모리가 프로그램 스택에 자동으로 할당됩니다.

예제:

int Counter()
  {
   static int count;
   count++;
   if(count%100==0) Print("함수 카운터는 다음으로 불립니다 ",count," times");
   return count;
  }
void OnStart()
  {
//---
   int c=345;
   for(int i=0;i<1000;i++)
     {
      int c=Counter();
    }
   Print("c =",c);
  }

더 보기

데이터 유형, 유형의 캡슐화 및 확장성, 변수 초기화, 가시성 범위 및 변수 수명, 객체 생성 및 삭제, 정적 클래스 멤버