변수의 선언 위치

정의

  • 전역변수 : 함수 밖, 보통 소스 파일의 최상단에 선언되는 변수. 프로그램 종료시까지 유지된다.
  • 지역변수 : 특정 블록(주로 함수)에 선언되는 변수로, 해당 블록이 실행되는 동안에만 메모리에 할당된다.
구분 전역변수 지역변수
선언 위치 모든 함수 밖. 특정 블록(주로 함수) 내부
스코프
(접근 범위)
프로그램 전체 영역.
다른 파일이나 함수 안에서도 접근 가능.
변수가 선언된 블록 내부에서만 접근 가능.
블록을 벗어나면 해당 변수에 접근 불가.
생존 기간 프로그램이 시작될 때 할당되어
프로그램이 종료될 때까지 유지된다.
변수가 선언된 블록이 실행되는 동안
초기화 명시적으로 초기화하지 않으면 자동으로 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