C++ 변수 선언 시, 값 자동 할당에 대해

오현진·2024년 7월 13일

C++ 

목록 보기
25/26
  • C++에서 int N;과 같이 지역 변수를 선언할 때 자동으로 0이 할당되지 않습니다. 이는 초기화되지 않은 변수로 간주되며, 그 값은 불확정적입니다.

  • C++에서 변수의 초기화 동작은 다음과 같이 다릅니다:

    • 지역 변수: 자동으로 초기화되지 않습니다. 사용 전에 반드시 명시적으로 초기화해야 합니다.
    • 전역 변수 또는 정적 변수: 0으로 자동 초기화됩니다.
    • 클래스의 멤버 변수: 기본 생성자에 의해 초기화되지 않는 한 불확정적인 값을 가집니다.
  • 안전한 프로그래밍을 위해서는 변수를 선언할 때 항상 명시적으로 초기화하는 것이 좋습니다.

#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을 출력합니다.

  • 정적 변수의 경우, 함수가 여러 번 호출되어도 이전 값을 유지하므로 두 번째 호출에서 값이 증가합니다.

0개의 댓글