변수의 초기화

정의

  • 선언한 변수에 대해 처음으로 값을 할당하는 과정
  • 변수에 의미 있는 첫 번째 값을 부여하는 과정이다.
1
2
3
4
5
6
// 변수 선언 후 초기화
int a;
a = 10;

// 변수 선언과 동시에 초기화
int b = 20;

변수의 초기화를 하지 않으면

  • 지역변수 : 쓰레기 값이 해당 변수의 초기 값으로 할당됨.
  • 전역변수/정적변수 : 자동으로 0 또는 0.0 또는 널 포인터로 초기화 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int global_var;
void global_not_initialized(){
	printf("not initialized global var : %d\n", global_var);
}

void local_not_initialized() {
	int local_var;
	printf("not initialized local var : %d\n", local_var);
}

int main() {
	global_not_initialized();
	local_not_initialized();
	return EXIT_SUCCESS;
}
1
2
3
# 출력
not initialized global var : 0
not initialized local var : 2

쓰레기 값 Garbage Value

  • 지역 변수를 명시적으로 초기화하지 않았을 때 해당 변수에 할당되는 의미 없는 값.
  • 쓰레기 값의 정체는 메모리의 잔재 이다.
  • 메모리의 잔재 : 변수가 할당된 메모리 공간에 이전에 저장되어 있던 데이터.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void not_initialized_sum(){
	int i, sum;
	for (i=1; i<=10; i++){
		sum = sum + i;
	}
	printf("초기화 안됨 : 1부터 10까지의 합 = %d\n", sum);
}

void initialized_sum(){
	int i, sum = 0; // 초기화 (같은 자료형에 같은 값을 넣을 경우 이런 식으로도 초기화 가능)
	for (i=1; i<=10; i++){
		sum = sum + i;
	}
	printf("초기화 됨 : 1부터 10까지의 합 = %d\n", sum);
}

int main() {
	not_initialized_sum();
	initialized_sum();
	return EXIT_SUCCESS;
}
1
2
3
# 출력
초기화 안됨 : 1부터 10까지의 합 = 17047831
초기화 됨 : 1부터 10까지의 합 = 55

Reference

C 프로그래밍 (김형근, 곽덕훈, 정재화 공저)
C 프로그래밍 강의 (방송통신대 - 이병래)

Comments