본문 바로가기

C언어

C언어_Static

> main2.cpp
int global_num = 100;

> main.cpp
static int global_num = 0;

void normal_num(){
	int num = 0;
	fprintf(stdout, "num: %d\n", num++);
}

void static_num(){
	static int s_num = 0;
	fprintf(stdout, "num: %d\n", s_num++);
}


int main(int argc, char ** argv){

	puts("int var");
	for(int i=0;i<10;++i){
		normal_num();
	}
	puts("static int var");
	for(int i=0;i<10;++i){
		static_num();
	}

	fprintf(stdout, "\nglobal_num: %d\n", global_num);
}

[결과 및 분석]

#1 static 전역변수 사용하지 않을 시

 

Static 전역변수 사용할 시 

정상적으로 컴파일이 됨.

다른 파일 내에 이름이 같은 변수가 있을 시에는 static 키워드를 통해 해당 변수가 유일한 변수라는 것을 컴파일러에게 알려줘야 한다.

 

#2 static 지역변수 테스트

 

Static 키워드를 사용하지 않으면 function을 콜 할 때 마다 새로 변수를 선언한다.

하지만 static 키워드를 사용할 경우, 프로그램이 종료될 때까지 새로 변수를 지정하지 않기 때문에 변수 값이 증가하는 것을 확인할 수 있다.