C++ (8) - 지역변수와 전역변수
본 내용은 어소트락 무료 강의 <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;
}