변수의 선언 위치
정의
- 전역변수 : 함수 밖, 보통 소스 파일의 최상단에 선언되는 변수. 프로그램 종료시까지 유지된다.
- 지역변수 : 특정 블록(주로 함수)에 선언되는 변수로, 해당 블록이 실행되는 동안에만 메모리에 할당된다.
| 구분 | 전역변수 | 지역변수 |
|---|---|---|
| 선언 위치 | 모든 함수 밖. | 특정 블록(주로 함수) 내부 |
| 스코프 (접근 범위) |
프로그램 전체 영역. 다른 파일이나 함수 안에서도 접근 가능. |
변수가 선언된 블록 내부에서만 접근 가능. 블록을 벗어나면 해당 변수에 접근 불가. |
| 생존 기간 | 프로그램이 시작될 때 할당되어 프로그램이 종료될 때까지 유지된다. |
변수가 선언된 블록이 실행되는 동안 |
| 초기화 | 명시적으로 초기화하지 않으면 자동으로 0 | 명시적으로 초기화하지 않으면 쓰레기값 |
| 사용 | 프로그램 전체에서 공유되는 값 | 특정 블록에서만 필요한 데이터 코드 독립성 높임 |
선언 위치에 따른 예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int a = 1; // 전역변수
void local_function(){
int a = 3; // 지역변수
printf("local function 에서의 지역변수 a : %d\n", a);
};
int main() {
printf("전역변수 a : %d\n", a);
local_function();
int a = 2;
printf("main 에서의 지역변수 a : %d\n", a);
return EXIT_SUCCESS;
}
1
2
3
전역변수 a : 1
local function 에서의 지역변수 a : 3
main 에서의 지역변수 a : 2
Reference
C 프로그래밍 (김형근, 곽덕훈, 정재화 공저)
C 프로그래밍 강의 (방송통신대 - 이병래)
Comments