#include <stdio.h>
void auto_func(void);
void static_func(void);
int main(void){
int i;
printf("common auto function...\n");
for (i = 0; i < 3; i++){
auto_func();
}
printf("static function...\n");
for (i = 0; i < 3; i++){
static_func();
}
return 0;
}
void auto_func(void){
auto int a = 0;
a++;
printf("%d\n", a);
}
void static_func(void){
static int a;
a++;
printf("%d\n", a);
}
- **`main` 함수**:
- `main` 함수는 먼저 "common auto function..."을 출력한 다음, `auto_func` 함수를 세 번 호출합니다. 각 호출 후에 `auto_func` 내에서 선언된 `auto` 변수의 값을 출력합니다.
- 이어서 "static function..."을 출력하고, `static_func` 함수를 세 번 호출합니다. 마찬가지로, 각 호출 후에 `static_func` 내에서 선언된 `static` 변수의 값을 출력합니다.
- **`auto_func` 함수**:
- `auto` 지정자를 사용하여 지역 변수 `a`를 선언하고 0으로 초기화합니다. `auto` 지정자는 지역 변수의 기본 저장 클래스를 나타내며, 일반적으로 생략됩니다. `auto` 변수는 함수가 호출될 때마다 초기화됩니다.
- 변수 `a`의 값을 1 증가시킨 후, 그 값을 출력합니다. `auto_func`가 호출될 때마다 `a`는 0으로 재초기화되므로, 출력값은 항상 1입니다.
- **`static_func` 함수**:
- `static` 지정자를 사용하여 지역 변수 `a`를 선언합니다. `static` 변수는 프로그램 실행 시 한 번만 초기화되고, 함수 호출 간에 그 값이 유지됩니다. 초기화를 명시적으로 지정하지 않으면 0으로 초기화됩니다.
- 변수 `a`의 값을 1 증가시킨 후, 그 값을 출력합니다. `static_func`가 여러 번 호출되더라도 `a`는 초기화되지 않으며, 그 값은 함수 호출 간에 유지됩니다. 따라서 첫 번째 호출에서 `a`는 1이 되고, 이후의 호출에서는 값이 계속 증가하여 출력됩니다.
'개념 > 혼자 공부하는 C언어' 카테고리의 다른 글
chapter 13) 레지스터 변수를 반복문에 사용한 예 (0) | 2024.08.29 |
---|---|
chapter 13) 두 함수에서 같은 이름의 지역 변수를 사용한 경우 (0) | 2024.08.28 |
chapter 13) 블록 안에 지역 변수를 사용하여 두 변수를 교환하는 프로그램 (0) | 2024.08.26 |
chapter 12) 직접 구현하는 gets() 함수 (0) | 2024.08.25 |
chapter 12) 문자열을 출력하는 puts와 fputs 함수 (0) | 2024.08.24 |