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 값 등을 활용하면 된다.
반응형
'프로그래밍 > C, C++' 카테고리의 다른 글
포인터 대상의 const 선언 (0) | 2020.12.12 |
---|---|
Call by value vs Call by reference (0) | 2020.12.12 |
c언어 기본 자료형의 종류와 데이터의 표현 범위 (0) | 2020.12.11 |