본 내용은 어소트락 무료 강의 <C/C++ 무료강의>을 기반으로 공부한 내용을 정리한 것이다. 틀린 내용이 있을 수도 있음.

지역변수와 전역변수

  • Main 함수 안에서 선언된 변수 : 지역변수
  • Main 함수 밖에서 선언된 변수 : 전역변수

변수와 메모리 영역 종류

  • 변수 종류
    • (1) 지역변수
    • (2) 전역변수
    • (3) 정적변수(static)
    • (4) 외부변수(extern)
  • 메모리 영역 종류
    • (1) 스택 영역
    • (2) 데이터 영역 🌟
    • (3) 읽기 전용 (코드, ROM)
    • (4) 힙 영역

지역변수가 스택 영역을 사용, 전역변수, 정적변수, 외부변수가 데이터 영역을 사용한다.

데이터 영역

  • 데이터 영역의 특징
    • 프로그램 실행 시 Main 함수 호출과 동시에 영역이 자동으로 생성
    • 프로그램 종료 시 Main 함수 종료와 동시에 영역이 자동으로 해제
    • 🌟 스택 영역에서 호출과정 진행 시 변함 없이 영역을 유지. 따라서 전역변수의 값이 호출과정에서 사라지지 않는다.

예시 코드

int g_i = 0     // 전역변수, 메모리 영역 사용

int main()
{
    // 지역변수 
    
    return 0;

}

지역변수 / 전역변수의 경우

// 1. 지역변수의 경우

void Test()         // 함수가 리턴 값이 없을 떄 void(無)로 정의
{
    int i = 0;
    ++i;            // 함수 종료시 값이 사라짐
}

int main()
{
    Test();
    Test();
    Test();

    return 0;
}

// 2. 전역변수의 경우

int g_i = 0;

void Test()
{
    ++g_i;      // 함수가 종료되어도 값을 유지. 전역변수는 모든 함수에서 사용가능.
}

int main()
{
    int a = 0;
    Test();
    Test();
    Test();

    g_i = 0;

    return 0;
}