static 변수
1. 함수 내부 및 외부에 선언 가능하다.(전역, 지역)
2. 한번만 초기화 된다. (전역 변수의 특징)
3. 함수 내부에서 선언될 경우 함수 내에서만
접근이 가능하다. (지역 변수의 특징)
void fct(){
static int val = 0;
val++;
printf("%d ", val);
}
int main(){
int i;
for(i = 0; i<5; i++)
fct();
}
1. fct() 함수가 끝나도 static 변수는
메모리 상에서 지워 지지 않는다.
2. static 변수의 초기화는 단 한번.
때문에 함수가 다시 호출되도
초기화 부분은 무시하게 된다.
따라서 출력 결과는
1 2 3 4 5
가 된다.
프로그램 실행 전 컴파일 과정에서 메모리 공간을 할당 받고
전체 프로그램이 종료될 때까지 동일 메모리 공간을 보유한다.
--> 전역 변수의 특징과 같다. 전역 변수도 static 변수이다.
전역 변수와 static 변수의 차이점?
누구나 접근 가능한 전역 변수와는 달리
선언된 지역 내에서만 접근이 가능하다는 장점이 있다.
'C, 자료구조' 카테고리의 다른 글
[자료구조] 연결 리스트의 이해(2) (0) | 2017.04.02 |
---|---|
[자료구조] 연결 리스트의 이해(1) (0) | 2017.03.29 |
[자료구조] 단순 정렬 알고리즘 (버블, 삽입, 선택) (0) | 2017.02.17 |
[C] 재귀 함수 (0) | 2016.12.21 |
[C] 함수 포인터와 void 포인터 (0) | 2016.12.20 |