c

16_지역, 전역변수(Local, Global Variable)

RongBee 2023. 4. 20. 23:42

Local은 지역이라는 뜻을 가지고 있고,

 

Global은 전반적인, 세계적인 이라는 뜻이 있다.

 

롤이라는 게임에선 Global 궁극기(모든 지역에 영향을 주는 스킬)를 생각하면 될 것 같다. 

 

그래서 지역변수와 전역변수의 차이점과 특성에 대해 알아보자.

 

 

 

Local Variable(지역 변수)

 

void PrintNum(int num)
{
   printf("num Value   :  %d\n", num);
   printf("num Address :  %p\n", &num);
}

int main()
{
   int num = 0;        // 메인 함수의 지역 변수 num
   int   A = 10;       // 메인 함수의 지역 변수 A 

   if(num == 0)          
   {
       A = 20;         
       int B = 30;      // if문 안의 지역 변수 B
       int num = 20;    // if문 안의 지역 변수 num을 생성과 동시에 20 저장
       
       // 지역 변수가 지역성이 동일 할 때 해당 지역과 가장 연관성이 깊은 변수부터 접근한다.
       printf("if문 안의 num Value    :  %d\n", num);  // 출력시 20이 나온다.
       printf("if문 안의 num Address  :  %p\n",&num);  // 출력시 if문 안의 num의 주소가 나온다.

       PrintNum(num);  // 출력시 PrintNum의 매개변수 값은 20이 나오고 매개변수 num의 주소가 나온다.
    }

     printf("if문 밖의 num Value     :  %d\n", num); // 출력시 0이 나온다.
     printf("if문 밖의 num Address   :  %d\n",&num); // 출력시 메인함수의 num의 주소가 나온다.

     PrintNum(num); // 출력시 0과 if문 안의 매개변수와는 다른 num의 주소가 나온다.
     return 0;
}

 

 

- 중괄호(코드 블록) 안에 선언된 변수를 의미하며 해당 중괄호 안에서만 사용할 수 있다.

 

- 중괄호 밖에서는 사용할 수 없는 지역성을 가지고 있는 변수이다.

 

 

 

 

Global Variable(전역 변수)

 

int A = 10; // 메인 함수 밖에 선언된 전역변수 A

int B = 20; // 메인 함수 밖에 선언된 전역변수 B

int main()
{
    printf("%d \n", A); 
    printf("%d \n", B);
}

 

 

- 중괄호 밖에 선언된 변수를 말하며 어느 지역이든지 모두 사용할 수 있는 특징을 가진다.

 

- 지역변수와는 다르게 중괄호를 벗어나도 사라지지 않는다.

 

- 전역변수와 같은 경우 프로그램의 시작부터 종료까지 이 데이터를 저장한다.