C++ 변수 범위 이해: 지역 변수 vs 전역 변수
범위(scope)는 프로그램의 한 영역을 말하며, 크게 세 곳에서 변수를 선언할 수 있습니다.
함수 또는 블록 내부 → 지역 변수(local variables)
함수 매개변수 정의 내부 → 형식 매개변수(formal parameters)
모든 함수 외부 → 전역 변수(global variables)
함수와 매개변수는 이후 장에서 배우겠습니다. 여기서는 지역 변수와 전역 변수가 무엇인지 설명하겠습니다.
지역 변수
함수나 블록 내부에서 선언된 변수를 지역 변수라 합니다. 그 함수나 코드 블록 내부의 문장에서만 사용할 수 있습니다. 지역 변수는 자신의 함수 외부에서는 알 수 없습니다. 지역 변수 사용 예제:
Live Demo
#include <iostream>
using namespace std;
int main () {
// 지역 변수 선언:
int a, b;
int c;
// 실제 초기화
a = 10;
b = 20;
c = a + b;
cout << c;
return 0;
}
전역 변수
전역 변수는 모든 함수 외부, 보통 프로그램 상단에 정의됩니다. 전역 변수는 프로그램의 수명 동안 값을 유지합니다.
전역 변수는 어떤 함수에서든 접근할 수 있습니다. 즉, 선언 후 프로그램 전체에서 사용할 수 있습니다. 전역 변수와 지역 변수 사용 예제:
Live Demo
#include <iostream>
using namespace std;
// 전역 변수 선언:
int g;
int main () {
// 지역 변수 선언:
int a, b;
// 실제 초기화
a = 10;
b = 20;
g = a + b;
cout << g;
return 0;
}
프로그램에서 지역 변수와 전역 변수에 같은 이름을 사용할 수 있지만, 함수 내부에서 지역 변수의 값이 우선합니다. 예:
Live Demo
#include <iostream>
using namespace std;
// 전역 변수 선언:
int g = 20;
int main () {
// 지역 변수 선언:
int g = 10;
cout << g;
return 0;
}
위 코드를 컴파일하고 실행하면 다음 결과가 나옵니다.
10
지역 변수와 전역 변수 초기화
지역 변수가 정의되면 시스템이 초기화하지 않으므로 직접 초기화해야 합니다. 전역 변수는 정의 시 시스템이 자동으로 다음과 같이 초기화합니다.
| 데이터 타입 | 초기값 |
| int | 0 |
| char | '\0' |
| float | 0 |
| double | 0 |
| pointer | NULL |
변수를 올바르게 초기화하는 것은 좋은 프로그래밍 관행이며, 그렇지 않으면 프로그램이 예기치 않은 결과를 낼 수 있습니다.