지역변수는 선언한 함수 내에서만 유효한 변수이다. 다음 코드의 Func 함수의 num 과 main 함수의 num은 다른 변수이다. 

#include <stdio.h>

int Func(void)
{
	int num = 10;
    num++;
    printf("Func num : %d\n", num);
    return 0;
}

int main(void)
{
	int num = 21;
    Func();
    printf("main num : %d\n",num);
    return 0;
}

지역변수는 선언된 지역(선언된 함수)를 벗어나면 자동으로 소멸된다. 위 코드의 Func 함수가 10번 호출된다면 Func의 num 변수도 메모리 공간에 10번 새롭게 할당되고, 소멸된다. 또한 지역변수는 선언된 지역 내에서만 유효하기 때문에 선언된 지역이 다르면 이름이 같아도 문제가 되지 않는다.

 

함수와 마찬가지로 중괄호를 사용하는 반복문이나 조건문에도 지역변수 선언이 가능하다. 

 

지역변수는 또한 외부에 선언된 동일한 이름의 변수를 가려준다. 다음 코드의 경우 if문 내부의 num이 외부의 num변수를 가려 if문 내에서는 if문 내에 선언한 변수의 값이 출력되는 것을 확인할 수 있다.

#include <stdio.h>

int main(void)
{
    int num = 1;

    if(num==1)
    {
        int num = 20;
        num += 5;
        printf("if문 내 지역변수 : %d\n", num);
    }
    printf("main함수 내 지역변수 : %d\n", num);
    return 0;
}

 

함수를 선언할 때 정의하는 매개변수도 지역변수의 일종이기 때문에 선언된 함수 내에서만 접근이 가능하며, 선언된 함수가 반환을 하면 소멸된다.

'Language > C, C++' 카테고리의 다른 글

[C] static 변수  (0) 2020.12.10
[C] 전역변수  (0) 2020.12.09
[C] 함수(function)  (0) 2020.12.08
[C] goto  (0) 2020.12.08
[C] switch  (0) 2020.12.08

+ Recent posts