지역변수와 전역변수의 차이와 사용이유
지역변수는 메모리를 절약한다.
전역변수는 프로그램이 실행될 때 같이 생성되며 계속 값을 유지해야 하므로 그만큼의 메모리를 항상 차지하게 된다.
지역변수는 함수가 호출될 때만 생성되며 함수가 종료되면 즉시 파괴되므로 자신이 속해 있는 함수가 실행중일 때만 메모리를 차지한다.
지역변수
지역변수는 이름 그대로 한 지역 내에서만 사용할 수 있는 변수이다. 여기서 지역이란, 중괄호에 의해 만들어지는 영역을 뜻한다. 지역 변수는 함수 내에서만 존재하고, 접근이 가능하기 때문에 지역을 벗어나면 자동으로 소멸된다. 함수 생성시 메모리에 올라가고 함수가 끝나면 메모리에서 소멸된다. 지역변수는 선언된 지역이 다르면 변수 명이 같아도 문제가 되지 않는다는 장점이 있다. 하지만 초기화하지 않고 사용하면 쓰레기 값이 들어가 실행 에러가 일어날 수 있다.
전역변수
전역변수는 지역변수와 다르게 어느 지역에서나 사용할 수 있는 변수이다. 전역변수는 프로그램의 시작과 동시에 메모리 공간에 할당되어서 프로그램이 종료될 때까지 존재한다. 또한 지역변수와 다르게 별도로 초기화하지 않으면 자동으로 0이 초기값으로 들어간다.
지역변수와 전역변수의 가장 큰 차이는 변수를 프로그램 전체에서 사용할 수 있느냐 없느냐의 차이이다.
이렇게 보면 전역변수가 장점이 많아 보이는 전역변수를 더 많이 사용하는 게 좋을 것 같지만, 그렇지 않다.코드가 길어지고 프로그램이 복잡해질수록 많은 함수를 사용하게 되는데, 전역함수를 사용하면 프로그램에 대해 정확히 파악할 수 없기 때문에 나중에 프로그램을 유지/보수하기 힘들어진다. 또한, 지역변수와 전역변수 중에 이름이 같은 변수가 있을 경우 지역변수를 우선적으로 접근하다. 코드가 길어질수록 겹치는 이름의 변수가 많아지므로 의도하지 않은 결과가 나올 가능성이 높아진다.