C++에서 int N;과 같이 지역 변수를 선언할 때 자동으로 0이 할당되지 않습니다. 이는 초기화되지 않은 변수로 간주되며, 그 값은 불확정적입니다.
C++에서 변수의 초기화 동작은 다음과 같이 다릅니다:
안전한 프로그래밍을 위해서는 변수를 선언할 때 항상 명시적으로 초기화하는 것이 좋습니다.
#include <iostream>
int globalVar; // 전역 변수
void exampleFunction() {
int localVar; // 지역 변수
static int staticVar; // 정적 지역 변수
std::cout << "전역 변수: " << globalVar << std::endl;
std::cout << "지역 변수: " << localVar << std::endl;
std::cout << "정적 지역 변수: " << staticVar << std::endl;
localVar = 10;
staticVar++;
}
int main() {
exampleFunction();
exampleFunction();
return 0;
}
전역 변수 (globalVar):
프로그램의 어느 곳에서나 접근 가능합니다.
프로그램 시작 시 자동으로 0으로 초기화됩니다.
프로그램이 종료될 때까지 메모리에 존재합니다.
지역 변수 (localVar):
함수 내에서만 접근 가능합니다.
자동으로 초기화되지 않습니다. 사용 전 반드시 값을 할당해야 합니다.
함수가 호출될 때마다 새로 생성되고, 함수가 종료되면 소멸됩니다.
정적 지역 변수 (staticVar):
함수 내에서만 접근 가능하지만, 함수 호출 간에 값이 유지됩니다.
프로그램 시작 시 자동으로 0으로 초기화됩니다.
프로그램이 종료될 때까지 메모리에 존재합니다.
이 코드를 실행하면:
globalVar는 0으로 출력됩니다 (자동 초기화).
localVar는 불확정적인 값을 출력합니다 (초기화되지 않음).
staticVar는 첫 번째 호출에서 0, 두 번째 호출에서 1을 출력합니다.
정적 변수의 경우, 함수가 여러 번 호출되어도 이전 값을 유지하므로 두 번째 호출에서 값이 증가합니다.