초기화란? (Initialization vs Reset)
요약
프로그래밍에서 초기화(Initialization)의 의미와 리셋(Reset)과의 차이를 알아봅니다. 변수 초기화, 배열 초기화, 구조체 초기화 등 정보처리기사 실기에서 자주 등장하는 초기화 개념을 정리합니다.
초기화(Initialization)란?
초기화(Initialization) 란 변수나 자료구조를 처음 만들 때 값을 넣어주는 것입니다.
"초기화"라는 단어 때문에 "값을 0으로 만드는 것" 또는 "원래 상태로 되돌리는 것"으로 오해하기 쉽습니다. 하지만 프로그래밍에서 초기화는 처음 값을 설정하는 행위 자체를 뜻합니다.
초기화 vs 리셋
| 초기화 (Initialization) | 리셋 (Reset) | |
|---|---|---|
| 뜻 | 처음 값을 설정 | 원래 상태로 되돌림 |
| 시점 | 변수를 처음 만들 때 | 이미 사용 중인 값을 다시 바꿀 때 |
| 횟수 | 한 번 (생성 시) | 필요할 때마다 여러 번 |
초기화하지 않으면?
C언어에서 변수를 선언만 하고 초기화하지 않으면, 그 변수에는 쓰레기 값(garbage value) 이 들어 있습니다.
이전에 메모리에 남아 있던 값이 그대로 읽히기 때문입니다. 반드시 사용 전에 초기화해야 합니다.
Java에서는 멤버 변수(필드) 를 초기화하지 않으면 자료형에 따라 기본값이 자동으로 설정됩니다.
| 자료형 | 기본값 |
|---|---|
int, long | 0 |
double, float | 0.0 |
boolean | false |
String, 객체 | null |
단, 지역 변수(메서드 안에서 선언한 변수) 는 자동 초기화되지 않으므로 반드시 직접 초기화해야 합니다.
Python에서는 변수를 선언만 하는 문법이 없습니다. 변수에 값을 대입하는 순간 선언과 초기화가 동시에 이루어집니다.
따라서 Python에서는 "초기화하지 않은 변수"가 존재할 수 없습니다. 대입하지 않은 변수를 사용하면 NameError가 발생합니다.
변수 초기화
변수를 만들면서 동시에 값을 넣는 것이 가장 기본적인 초기화입니다.
배열 초기화
배열도 선언과 동시에 값을 넣을 수 있습니다.
구조체 초기화
C언어에서 구조체를 초기화할 때는 {}를 사용합니다. 구조체 정의에서 멤버를 선언한 순서대로 값이 대입됩니다.
{ 0, 5u }에서 첫 번째 값 0은 첫 번째 멤버 next에, 두 번째 값 5u는 두 번째 멤버 x에 대입됩니다. 구조체 정의에서 멤버 순서가 바뀌면 초기화 값의 의미도 바뀝니다.
핵심 정리
| 용어 | 의미 | 예시 |
|---|---|---|
| 선언 | 변수의 이름과 타입을 정함 | int x; |
| 초기화 | 처음 값을 넣어줌 | int x = 5; |
| 대입 | 이미 있는 변수에 값을 넣음 | x = 10; |
| 리셋 | 원래 상태로 되돌림 | 초기값으로 복원 |