CS Study/C++

[C++] [2] 변수의 유효 범위(variable scope)

23학번이수현 2024. 12. 18. 00:37

1. Variable Scope?

- 변수를 선언했다고 어느 곳에서나 사용 가능한 것은 아니다.

- 이는 곧, 변수가 어떻게 선언되었냐에 따라 사용할 수 있는 범위가 결정된다.

- 마치 파이썬에서 def 안에 선언한 변수가 지역변수로 취급되는 것처럼

- 어떤 함수에서 변수를 선언하면 그 변수는 해당 함수에서만 쓸수 있는데, 이를 지역 범위(local scope)라고 한다.

 

ex)

###### Input ######
#include <iostream>

void print(){
    int a = 5;
    std::cout << a << std::endl;
}

int main(){
    int a = 3;
    std::cout << a << std::endl;
    print();

}

###### Output ######

5
3

 

- 같은 변수명을 써도 각각 다르게 작용된다는 것을 알 수 있다.

 

2. Global Variable VS Local Variable

- 전역 변수와 지역 변수에 대해서 알아보자.

- 전역변수란? : 네임스페이스나 클래스, 함수 등에 속하지 않고 외부에 선언한 변수를 의미한다. 즉, 선언지점부터 끝까지 유효하다.

- 전역 변수와 지역 변수가 같은 변수명을 가지고 있을 때 각각 호출하는 방식에 대해 알아보자.

ex)

##### INPUT #####
#include <iostream>


int a = 5; //Global Variable

int main(){
    int a = 3;
    std::cout << a << std::endl;

    std::cout << ::a << std::endl;

}

##### Output #####

3
5

 

- 3이 먼저 출력된것을 보면, 전역 변수보다 지역 변수가 우선순위가 높다라는 것을 알 수 있다.

- 그렇기에 전역 변수를 호출하려면 :: 이라는 전역 범위 연산자를 사용하면 된다.

- 하지만 실제 실무에선 전역 변수를 표현하기위해 g_ 라는 접두사를 붙이도록하자. (ex : g_a)