반응형
#include<stdio.h>
// 전역, void함수
void ar_print(void);
int main(void)
{
int i = 0;
while (i < 5)
{
ar_print();
i++;
// 당연히 이곳에서는 st_a를 접근못한다
}
// 당연히 이곳에서는 st_a를 접근못한다
}
// 당연히 이곳에서는 st_a를 접근못한다
void ar_print(void)
{
int a = 1;
static int st_a = 3;
st_a++;
a++;
printf("a: %d\n", a);
printf("st_a : %d\n", st_a);
}


실행결과를 보자.
static 변수는 블록 내에서는 유효하지만 소멸되지 않는 변수이다.
a와 st_a의 차이를보자
a는 함수가 종료되는 시점에 소멸되고, 함수가 호출되는 시점에서 생성되지만

1. static 변수는 함수가 호출할 떄 1번반 생성된다. (a는 호출할 때 마다 int a = 1해주고 있으니 계속 생성되는 셈)
2. static 변수는 함수가 끝날 때 소멸되지 않는다.

그래서 다음과 같은 결과를 볼 수 있다.



반응형

'C > C' 카테고리의 다른 글

[C] Error 상수 error.h  (0) 2021.06.08
Char형 문자열 배열을 HEX dump 뜨기  (0) 2021.05.12
[C 언어] 객체 지향 C 스타일 (Object Oriented C programming style)  (0) 2020.04.21
정리  (0) 2017.10.23
전역변수와 void함수 이해하기  (0) 2017.10.19