#include <stdio.h>
void assign10(void);
void assign20(void);
int a;
int main(void){
printf("before a : %d\n", a);
assign10();
assign20();
printf("after a : %d\n", a);
return 0;
}
void assign10(void){
a = 10;
}
void assign20(void){
int a;
a = 20;
}
- **전역 변수 선언**: `int a;`
- 프로그램 전체에서 접근 가능한 정수형 전역 변수 `a`를 선언합니다. 초기값은 기본적으로 0입니다.
- **`main()` 함수**
1. **전역 변수 초기 상태 출력**:
- `printf` 함수를 사용하여 전역 변수 `a`의 초기값을 출력합니다. 프로그램이 시작될 때 `a`는 0이므로, "before a : 0"이 출력됩니다.
2. **함수 호출**:
- `assign10` 함수를 호출하여 전역 변수 `a`에 10을 할당합니다.
- 이어서 `assign20` 함수를 호출합니다. 이 함수 내에서는 새로운 지역 변수 `a`를 선언하고, 이에 20을 할당합니다. 하지만 이는 전역 변수 `a`에 영향을 주지 않습니다.
3. **전역 변수 변경 후 상태 출력**:
- 두 함수 호출 이후, `printf` 함수를 사용하여 전역 변수 `a`의 값을 출력합니다. `assign20` 함수에서 선언된 지역 변수 `a`는 전역 변수 `a`와는 별개이므로, 전역 변수 `a`의 값은 `assign10` 함수 호출로 인해 10으로 변경된 상태를 유지하고, "after a : 10"이 출력됩니다.
4. **프로그램 종료**:
- `return 0;`을 사용하여 프로그램이 성공적으로 실행되었음을 나타내며, 프로그램을 종료합니다.
- **`assign10` 함수**: `void assign10(void);`
- 이 함수는 전역 변수 `a`에 10을 할당합니다.
- **`assign20` 함수**: `void assign20(void);`
- 이 함수는 새로운 지역 변수 `a`를 선언하고, 이에 20을 할당합니다. 이 지역 변수는 함수가 종료되면 사라지며, 전역 변수 `a`에는 영향을 주지 않습니다.
'개념 > 혼자 공부하는 C언어' 카테고리의 다른 글
chapter 13) 포인터를 써서 변수의 값에 10을 더하는 경우 (0) | 2024.09.01 |
---|---|
chapter 13) 주소를 반환하여 두 정수의 합 계 (0) | 2024.08.31 |
chapter 13) 레지스터 변수를 반복문에 사용한 예 (0) | 2024.08.29 |
chapter 13) 두 함수에서 같은 이름의 지역 변수를 사용한 경우 (0) | 2024.08.28 |
chapter 13) auto 지역 변수와 static 지역 변수의 비교 (0) | 2024.08.27 |