공부하자/C언어

C언어 문법 공부 4장 [C언어의 전역 변수]

YoBot 2016. 11. 19. 14:08

2. 전역 변수


전역 변수는 지역 변수와는 다르게 한정된 지역이 아닌 모든 지역에서 사용이 가능한 변수를 말하는 것 입니다.

블럭 밖에서 선언된 변수는 모두 전역 변수 이죠.

그리고 전역 변수는 프로그램이 끝날때까지 들어있는 값을계속 유지합니다.


그럼 예제 소스를


/* 파일 이름 : C4-2.C 프로그램 내용 : 전역 변수를 설명하는 프로그램. */


int a;


void func(){

a=5;

}


void main(){

func();

a=10;

}


이 소스에서 모든 블럭 밖에 a라는 변수가 선언되어 있으므로 a는 전역 변수 입니다.

그러므로 어느 곳에서든지 사용이 가능하죠

소스에소 볼수 있는것 처럼 a라는 변수는 main함수와 func라는 함수에서모두 사용할수 있습니다.



그러면 에제 하나를 더 볼까요? 

/* 파일 이름 : C4-3.C 프로그램 내용 : 전역 변수를 설명하는 프로그램. */


void func(){

a=5;

}


int a;


void main(){

func();

a=10;


이 소스는 위에 것과 똑같지만 전역 변수 선언을 func함수와 main함수 사이에 한 것 입니다.

전역 변수를 쓰려면 그 변수가 그것을 쓰는 부분의 위쪽에 선언되어 있어야 합니다.

func함수 안에서 a를 사용하고 있는데 a는 그 아래에 선언되어 있죠?

이럴땐 func함수 위에 a라는 전역 변수가 있다는 것을 알려주면 됩니다.


방법은 간단한데 

extern 데이터형 변수명; 

이렇게 해 주면 됩니다.


아까 그 소스를 고쳐보면 

/* 파일 이름 : C4-4.C 프로그램 내용 : 전역 변수를 설명하는 프로그램. */


extern int a;


void func(){

a=5;

}


int a;


void main(){

func();

a=10;


이렇게 해 주면 간단히 해결 되죠 하지만 특별한 경우가 아니라면 a라는 변수 선언을 위에 해 주는 것이 좋겠죠?