본문 바로가기
코딩/C 언어

C언어 기초 - 지역변수와 전역변수 이해하기

by DIYver 2020. 7. 5.

본문 목표

 C언어에서 코딩을 하면 당연히 지역변수와 전역변수를 이해해야한다.

 

지역변수와 전역변수의 차이를 이해하고,

 

실제 사용하는 방법을 이해한다.

 

 

 

 

개념 정리

 지역변수와 전역변수를 이해해야 하는데, 그 차이는 이름으로 유추해 볼 수 있다.

 

지역변수 - local variable

: 특정 지역에서만 사용되는 변수

 

전역변수 - global variable

: 모든 구역에서 사용되는 변수

 

즉, 지역변수는 좁은 범위에서 사용되고,

 

전역변수는 모든 범위에서 사용하는 것이다.

 

 

"그냥 모든 변수 다 전역변수로 사용하고 쓰면 편하잖아요!"

라고 할 수 있다.

 

지역변수가 중요한 이유는 프로그램 실행속도와 연관된다.

 

모든 변수를 전역변수로해서 사용하게 된다면

 

프로그램이 시작부터 끝까지 사용하지도 않을 변수들을 다 유지한채 작동하므로 컴퓨터의 자원을 많이 사용하게 된다.

 

컴퓨터 성능이 뛰어나면 상관없지만, 그렇지 않은경우 속도저하가 발생하게 된다.

 

 

또, 코드 개발에 있어서 코드의 간결성을 위해서라도 지역변수를 잘 다뤄야 한다.

 

전역변수로만 사용하면 오류가 발생했을 때, 어디에서 발생했는지 알기도 힘들다.

 

 

 

 

본격적으로 지역변수와 전역변수를 알아 보도록 하자.

위에서 보면 집에서 가족간에 부르는 호칭은 지역변수 개념과 같다.

 

집에서는 별명을 써도 누구를 지칭하는지 알 수 있지만,

 

다른 집에가서 그 별명을 부르면 누구를 부르는지 알 수 없다.

 

본명을 사용하면 얘기가 달라진다.

 

본명은 사회에서 사용되는 이름으로 전역변수 개념과 같다.

 

옆집에서는 본명으로 기억하고, 부를때도 본명으로 부르듯이 말이다.

 

 

 

 

이번엔 속도 측면에서 다뤄보면

 

대학교 수업시간에 선생님이 학생의 이름을 부르려 할 때, 

 

출석부를 찾아서 이름을 부르는 것과

 

집에서 부모가 자식의 이름을 부르는 것 중에서 무엇이 더 빠를까?

 

당연히 부모가 자식의 이름을 부르는 것이 더 빠르다.

 

자주 부르던 이름이고, 굳이 등본을 찾아서 볼 필요는 없으니깐 말이다.

 

즉, 지역변수를 선언하고 사용하는 것이 속도도 더 빠르다.

 

 

 

 

그럼 이제 지역 변수는 코드에서 어떻게 쓰고,

 

전역 변수는 어떻게 사용하는지 알아보자.

 

위처럼 main() 위에 선언하면 전역변수이고,

 

main 안에 들어가면 전역 변수인 것이다.

 

그리고 main 안에서도 조건문과 반복문을 사용하고,

그 안에서 변수를 선언했다면

그 안에서만 변수가 유효하다.

 

 

 

 

 

 

 

 

이런 코드를 실행하려고 할 때,

 

마지막 즈음에 빨간색 물결 표시 뜬 부분을 보면

 

a 변수가 잘못 되었다고 표시가 된다.

 

왜냐하면 a 변수는 if (조건문) 안에서만 사용해야 되는 지역변수 이기 때문이다.

 

제대로 쓰려면 아래와 같이 써야 한다.

 

a 를 선언한 곳에서만 값이 유효하기에

 

조건문 안에서 출력 명령을 해줘야 정상적으로 출력이 된다.

 

 

 

 

 

 

 

 

 

 

 

결론

전역변수와 지역변수의 차이를 알 수 있었다.

 

전역변수는 비교적 자유롭지만, 속도에서 손해가 있고,

 

지역변수는 섬세하게 신경써야 하지만, 속도에서 이점이 있다.

 

함수 안에서 사용되는 함수는 다 지역변수이고,

 

그 함수 안에서만 유요하다.

 

 

 

 

 

 

 

도움이 되었거나, 문제가 있는 경우 댓글로 알려주세요~!

감사의 댓글은 작성자에게 큰 힘이 됩니다 ^^

댓글