C/C
초간단 static 변수 이해하기
2017. 10. 19. 18:22반응형
#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 |