프로그래밍/C, C++
전역변수와 지역변수에 static 활용하기
유니디니
2020. 12. 13. 23:14
728x90
반응형
먼저 전역변수와 지역변수의 개념은 다음과 같다.
- 전역변수 : 프로그램이 시작할 때, 1회 초기화되고 프로그램 종료 시까지 메모리에 존재
- 지역변수 : 선언된 함수 내에서만 접근이 가능하며, 속해있는 함수가 반환되는 동시에 소멸
그렇다면, 지역 변수에 static을 활용하면 어떻게 될까?
"지역변수에 static이 붙게 되면, 전역변수와 같이 활용할 수 있다."
#include <stdio.h>
void test(void){
static int n = 0;
int test = 1;
n = n+1;
test = test+1;
printf("static data : %d, local : %d\n", n, test);
}
int main(void){
int i;
for(i = 0; i<3; i++){
test();
}
return 0;
}
Result
static data : 1, local : 1
static data : 2, local : 1
static data : 3, local : 1
코드를 해석해보면 다음과 같다. test 변수는 test()함수가 호출되어야 초기화되며, 초기값은 0이다. 또한, static int n 변수는 test() 함수가 호출되지 않으면 전역변수처럼 0으로 초기화되고, 프로그램 시작과 동시에 초기화 된다.
test()함수에 선언되어 있는 이유는 변수 접근의 범위를 제한하기 위함이다.
※ test()함수에 선언된 변수 n값을 main함수로 가져오기 위해서는 함수 인자와 return 값 등을 활용하면 된다.
반응형