본문 바로가기

BackEnd/C

스코프(scope)

반응형

1. 스코프란?


- 범위 또는 영역이라는 의미이다. 영역은 변수에 접근이 가능한 영역을 의미한다.



2. 지역이 다르면 동일한 이름의 변수 선언 가능


중괄호에 의해서 구분이 되는 영역,지역을 달리하면 동일한 이름의 변수선언이 가능하다.

- 3행의 첫 번째 num은 5행과 13행의 num과 같다. 그리고 두번째와 세번째 num은 다른 num이다.


- 이렇게 main함수에서 선언된 변수 num의 접근 가능 영역은 변수가 선언된 위치서부터 main함수


의 마지막까지 이어간다. 그런데 main함수 내에 존재하는 if문 안에서도 num 이라는 변수가 새로 


선언되었다. 이러한 경우 if문 안에서는 더이상 main함수에서 선언된 변수 num의 접근이 불가능하


고, 새로 선언된 변수에 접근이 가능하다. 반면 else문 안에서는 변수 num이 선언되지 않았다. 따라


서 else문 안에서 main함수에서 선언된 변수 num이 된다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int main(void)
{
    int num = 1;//첫 번째 num
 
    if(num == 1)
    {
        int num = 2;//두 번째 num
        num++;
        printf("if문 안에서의 num: %d \n", num);
    }
    else
    {
        num++;//첫 번째 num
        printf("else문 안에서의 num: %d \n", num);
    }
 
    printf("if문 밖에서의 num: %d \n", num);

    {
        int num = 100;//세 번째 num
        num++;
        printf("이름없는 영역에서의 num: %d \n", num);
    }
    return 0;
}



3. 지역 변수의 생성과 소멸 시기


앞의 예제에서 본, 지역 내에 선언된 변수들을 가리켜 지역변수라 한다. 


이 지역변수는 선언된 지역을 벗어나 버리면 메모리 공간에서 자동으로 소멸된다.






반응형

'BackEnd > C' 카테고리의 다른 글

문자의 표현방법과 문자 관련 표준함수들  (0) 2019.03.04
반복문  (0) 2019.03.04
swtich문  (0) 2019.03.03
삼항 연산자  (0) 2019.03.03
if~else문  (0) 2019.03.03