> 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 키워드를 사용할 경우, 프로그램이 종료될 때까지 새로 변수를 지정하지 않기 때문에 변수 값이 증가하는 것을 확인할 수 있다.
'C언어' 카테고리의 다른 글
C언어_포인터와 주소값 (0) | 2022.03.21 |
---|---|
C언어_fprintf, put을 쓰는 이유 (0) | 2022.03.20 |
C언어_ 포인터 변수와 배열의 이름, 문자열을 함수의 매개변수로 전달 (0) | 2022.03.20 |