지역 변수

지역 변수 개념

지역 변수(local variable)는 그 변수가 선언된 블록( 중괄호) 내부에서만 존재하고 접근이 가능한 변수를 의미 합니다.
즉 , 지역 변수의 ‘지역’은 블록( 중괄호 )영역 안을 말합니다.
따라서, 지역 변수는 그 영역 안에서만 유효한 변수입니다.

지역변수와 전역 변수

변수의 선언 위치가 어디 인가에 따라서 전역 변수와 지역 변수로 나눌 수 있습니다. 즉, 블록의 내부에서 선언되는 변수는 지역 변수입니다. 그리고 함수 외부에서 선언되는 변수는 전역 변수입니다. 이 두 가지의 변수는 첫째 , 메모리에 존재하는 시간 , 둘째 변수에 접근 범위 에서 차이점을 갖고 있습니다.

지역 변수 예제 1

Local Variable Exam

위 예제의 실행 결과는 아래와 같습니다.

FuncOne num : 11
num1 & num2 : 21 29
main num : 17

지역 변수는 그 변수가 선언된 블록 내부에서만 유효한 것입니다.
5행에서 선언된 변수 num은 3행~9행의 FuncOne 함수 블록 내부에서 선언이 되었습니다. 따라서 변수 num은 지역 변수입니다. 이 변수가 해당 지역을 벗어나게 되면 더 이상 유효하지 않습니다. 해당 지역을 벗어나는 순간 메모리에서 자동 소멸되기 때문입니다.
13 행과 14 행에서 각각 선언된 변수 num1 , num2 는 12 행에서 18 행의 블록 안에서 유효합니다.

22행에도 5행에서 선언된 변수와 동일한 이름을 갖는 변수 num이 선언되어 있습니다. 변수는 자신이 선언된 그 지역 안에서만 유효한 것이 원칙입니다.
따라서 num 이라는 두 변수는 선언된 지역이 다르기 때문에 아무런 문제가 없습니다.

정리하면 , 5행의 변수 num 은 3 행에서 9 행의 FuncOne 함수 안에서 유효한 변수입니다.
22 행의 변수 num 은 20 행에서 27 행의 main 함수 내부에서 만 사용 가능한 변수입니다.

예제 2

서로 다른 함수에서 동일한 이름을 갖는 변수를 사용한 또 다른 예제를 봅시다.

Local Variable Exam2

3 행 : assign 함수를 선언하고 있습니다.
7 행 : main 함수의 지역 변수 local 이 선언되고 초기화 되어 있습니다.
9 행 : assign 함수를 main 함수에서 호출 하고 있습니다.
17 행 : assign 함수의 지역 변수 local이 선언되고 초기화 되어 있습니다.

위 예제의 실행 결과는 아래와 같습니다.

assign 함수 local : 10
main 함수 local : 0

7행과 17행에서 이름이 local 인 동일한 변수가 선언 되어 있습니다.
그러나 , 7행의 local 은 main 함수 내부에서 사용하고 17행의 local 은 assign 함수 내부에서 이용되므로 문제가 없습니다.

매개 변수와 지역변수

함수에서 사용하는 매개 변수도 지역 변수입니다. 왜냐하면 매개 변수가 지역변수의 일반적인 특징을 모두 가지고 있기 때문입니다.
즉 , 매개변수에 접근은 함수 내부에서만 접근이 가능합니다.
그리고 함수가 값을 반환하면 매개변수도 메모리에서 소멸됩니다.
이런 이유로 매개변수를 지역변수의 일종으로 볼 수 있는 것입니다.