사실 전역 변수만을 가지고도 프로그램을 만드는데는 문제가 없다. 그렇다면 지역 변수는 왜 존재하는 것일까? 지역변수는 그 범위가 제한적이고 그 범위를 벗어나면 접근 할 수가 없다.
그리고 해당 함수가 종료되면 사라지는 녀석이다. 지역변수가 가지는 장점을 통해 언제 왜 사용해야 하는지 알 수 있었으면 좋겠다.
지역변수의 장점으로 독립성일 말할 수 있다. 함수들을 흔히 집을 만드는 벽돌, 레고 블럭, 부품이라고 하는데 이 벽돌들끼리 서로 공유하는 부분이 있다면 마음대로 조립할수가 없다.
어떤 녀석들끼리 모아 놔도 그 벽돌단위들을 따로 놀아야한다. 공유한다는 이야기가 전역변수를 같이 접근해서 그 값으로 동작한다는 것을 의미한다.
물론 프로그래머가 실력자라서 안 꼬이도록 잘 할 수 있다 치더라도 프로그램을 만든 후 1,2년이 지나고 그 프로그램을 다시 수정해야 한다면 그 공유된 전역변수를 이해하기란 쉽지 않을 것이다.
또 다른 장점으로 디버깅 효율을 증가시킨다. 디버깅이란 것이 변수가 어떤 값을 가지고 있는지 따라가는 경우가 많다. 변수의 범위가 정해진 것들이 많다면 봐야 할 변수들의 수는 줄어들기 마련이다.
또 다른 장점으로는 지역변수는 메모리를 절약시켜 준다. 제일 처음 이야기 했든이 해당 함수가 종료되면 그 변수를 사라진다.
사라진다는 의미는 메모리를 더 이상 차지하지 않고 있다는 이야기이다. 요즘 뭐 워낙 컴퓨터가 좋고 메모리 용량도 커져서 큰 문제는 없지만 마이크로프로세서 같이 작은 단위인 놈을 가지고 구동 시킬 때에는 메모리가 상당히 부족하다.
스택 포인터까지고 제한이 있기 때문에 함수가 함수를 호출하는 횟수도 제한적이다.
또 다른 장점으로는 재귀 호출이나 상호 호출 같은 특수한 함수를 구현하기 위해서는 지역변수를 반듯이 써야만 한다. 이를 전역변수로 구현한다고 하면 동적 할당을 끊임 없이 해주어야 할 것이다.