본문 바로가기

Programming/C Language

전역 변수 (Global Variable)

이번에 설명할 변수는 '전역변수'이다

앞서 설명한 변수인 지역변수와는 매우 비교되는 함수다!
우리가 여태껏 사용해왔던 변수들은 호출된 시점으로부터 메모리 공간에 할당되서 함수가 종료되면 메모리 공간에서 소멸되는 지역변수 형태의 변수들이다.

이번 전역변수프로그램이 처음 실행되는 순간 메모리 공간에 할당되어 프로그램이 종료될 떄까지 메모리 공간에 남아있는 변수이다!


전역변수는 이름 그대로 언제 어디서든 접근이 가능한 변수로 지역변수와 달리 중괄호 내에 선언되지 않는다.

다음 간단한 예제를 통해 전역변수를 알아보자!




5행에서 num이라는 전역변수를 초기화하지 않고 선언만 하였다 , ( 보기와 같이 전역변수는 함수 몸체 내에 선언되지 않는다.
9헹에서는 함수 내부에 선언한 변수도 아닌 num을 출력을 시도한다.

 
우리는 분명 전역변수 num을 선언만했지 초기화 하지는 않았다. 우리가 배운대로라면 결과값은 모두 쓰레기값이 나와야한다.

결과값을 살펴보도록 하자.





엥? 우리의 예상과는 달리 쓰레기값이 출력되지 않았다.


여기서 우리는 전역변수의 특성 한가지를 알 수 있다.
전역변수는 선언 후 별도의 값으로 초기화하지 않으면 기본 0으로 초기화가 된다.


전역변수의 특징


1)    프로그램의 시작과 동시에 메모리 공간에 할당되어 프로그램이 종료될때 까지 존재한다.
2)    별도의 값으로 초기화하지 않으면 기본 0으로 초기화된다.

3)    프로그램 전체 영역 어디서든지 접근이 가능하다.




전역변수를 사용하면서 참고할 점

- 전역변수와 지역변수의 이름이 같을시 , 지역변수의 해당 지역 내에서는 전역변수가 가려지고 지역변수로 접근이 이뤄진다.
    (하지만 이러한 상황은 매우 좋지않으므로 , 가급적이면 지역변수와 전역변수의 이름은 달리하는 것이 좋다.)
전역변수의 편리함은 의심의 여지가 없다 , 그렇다고 전역변수를 남발해서는 안된다.
    전역변수의 수가 증가하면 그만큼 프로그램은 복잡해지며 , 좋은 구조의 프로그램과는 거리가 멀어진다.

'Programming > C Language' 카테고리의 다른 글

1차원 배열  (0) 2017.10.31
static 변수 (static variable)  (0) 2017.10.31
지역 변수 (Local Variable)  (0) 2017.10.31
함수 정리  (1) 2017.10.30
if 문 그리고 else  (0) 2017.10.30