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);
}
- 중괄호 밖에 선언된 변수를 말하며 어느 지역이든지 모두 사용할 수 있는 특징을 가진다.
- 지역변수와는 다르게 중괄호를 벗어나도 사라지지 않는다.
- 전역변수와 같은 경우 프로그램의 시작부터 종료까지 이 데이터를 저장한다.