코드로 이해해보자!
자 위 Code를 보자. 다른 프로그래머가 본다면 헛웃음을 지을만할 정도로 엉터리 Code지만, Local scope를 이해하기에는 이만한 Code가 없다. 위 Code는 실행되지 않는다. 그러한 이유는 같은 변수를 동일하게 사용하기 때문이다. 오류가 나는 곳은 int x = 1;
이 부분이다. 쉽게 생각하면 같은 메모리 갖는 공간에 다른 값을 넣으려고 하기 때문이다. 그렇다면 이 Code는 실행이 될까? 실행이 된다. 왜 그럴까? {}
을 이용하였기 때문이다. 즉 첫 번째 x와 두 번째 x, 세 번째 x는 각각 다른 변수이다. 즉, 메모리 주소가 다르다. 이 이유를 설명하려면 스택과 힙에 대한 Concept을 알아야 하는데, 이는 다음에 설명하고 왜 이런지만 알고 넘어가도록 하자. 여기서 각각의 x와 x의 주소를 같이 출력해보면 쉽게 알 수 있다.
실제로 실행을 해보면 각각의 x는 주소가 다르다. 그러므로 생긴건 같지만 다른 주소를 갖고 있는 다른 애라는 것이다. 쌍둥이지만 같은 애라고 볼 수 없는 거라고 생각하면 된다.
그럼 Local scope안에 선언을 하지 않고 x = 2;
라고 입력하면 어떻게 될까? 실험해보자! int x = 0
과 x = 2
는 같은 x를 갖는다.
따라서 Local scope를 어떻게 사용하냐에 따라 천차만별로 달라지므로 제대로 사용하는 것이 중요하다.