[C] 변수의 범위, 로컬 변수, 글로벌 변수
글로벌변수(전역변수) 선언 후 프로그램 전체에서 사용가능
로컬변수(지역변수) 함수안에서 사용하고 함수가 종료되면 사라진다
#include<stdio.h>
int y; //글로벌변수 y
int z; //글로벌변수 z
void myfunc(int a)
{
int z; //글로벌 변수 z가 있어도 함수안에서는 로컬변수 z가 우선
int x; //myfunc함수의 로컬변수 x
x=a; //myfunc함수의 로컬변수 x에 a를 대입
y=a; //글로벌변수 y에 a를 대입
z=a; //myfunc함수의 로컬변수 z에 a를 대입
} //myfunc함수가 종료되었으므로 로컬변수 x, z에 넣은 값은 사라지고 글로벌변수 y에 넣은 a만 살아남는다
main()
{
int x; //동일한 이름의 로컬변수끼리는 별개의 변수로 간주
x=10;
y=10;
z=10;
printf("x, y, z의 값은 %d, %d, %d\n", x, y, z); //로컬변수x=10, 글로벌변수y=10, 글로벌변수z=10
myfunc(5); //myfunc함수가 종료되었으므로 로컬변수 x, z에 넣은 값은 사라지고 글로벌변수 y에 넣은 a만 살아남는다
printf("x, y, z의 값은 %d, %d, %d\n", x, y, z); //로컬변수x=10, 글로벌변수y=5, 글로벌변수z=10
}
myfunc의 x와 main의 x는 별개의 x다.
로컬변수 z는 함수가 끝나고 나면 글로벌 변수 z로 대체된다.