9. 변수(2)

2014. 2. 2. 18:58 - 루하스

 

변수


전역변수? 지역변수?

변수는 위치에 따라 사용범위 수명, 우선순위가 달라진다. 

함수 밖에 위치하는 변수를 전역변수, 함수 안에 위치하는 변수를 지역변수라 한다.

전역변수는 어떤 함수에서든 쓰이며 지역변수는 그 함수에서만 쓸 수 있다.


#include <stdio.h>


int globalVariable; //전역변수


int main(int argc, char** argv)

{

int localVariable = 0;  //지역변수

printf("전역변수 = %d\n", globalVariable);

printf("지역변수 = %d\n", localVariable);


return 0;

}

※전역변수는 초기화하지 않아도 0으로 자동 초기화된다. 하지만 왠만하면 초기화 하는것을 추천한다.






변수의 수명

전역변수는 프로그램이 끝날때까지 존재하지만 지역변수는 그 함수가 끝날때까지만 존재하다 사라진다.


#include <stdio.h>


int globalVariable = 0;


void counter();


int main(int argc, char** argv)

{

int localVariable = 0;


counter();

counter();

counter();

return 0;

}


void counter()

{

int count=0;

printf("함수를 호출한 횟수 : %d\n", count);

count = count+1;

}

※count의 값이 호출할때마다 0인것을 볼 수 있다.





정적변수(static variable)

함수가 끝날때마다 변수가 사라지는데 그걸 방지하는 방법이 있다.

지역변수 앞에 static를 놓아두면 변수가 사라지지 않아 값이 유지된다.

#include <stdio.h>


int globalVariable = 0;


void counter();


int main(int argc, char** argv)

{

int localVariable = 0;


counter();

counter();

counter();

return 0;

}


void counter()

{

static int count=0;

printf("함수를 호출한 횟수 : %d\n", count);

count = count+1;

}





변수의 우선순위

변수가 우선순위가 필요한가 라는 의문이 들겠지만 전역변수와 지역변수의 이름이 같을때 문제가 생긴다.

그렇기 때문에 같은 이름의 변수를 호출햇을때 컴파일러는 지역변수를 호출한다.


#include <stdio.h>


int Variable = 50;


int main(int argc, char** argv)

{

int Variable = 10;


printf("결과 : %d\n", Variable);

return 0;

}

※변수이름을 같게 하면 실수하는 경우가 생기기 때문에 변수이름을 다르게 하는것을 추천한다.







1) 전역, 지역, 정적 변수를 설명하시오


2) 전역 변수와 지역변수의 이름이 같을때 전역 변수를 쓰는 방법은?

'프로그래밍 > C언어' 카테고리의 다른 글

11. 조건문 switch  (0) 2014.02.03
10. 조건문 If - else if  (0) 2014.02.02
8. 입력함수 scanf();  (0) 2014.02.02
7. 함수  (0) 2014.02.02
6. 변수(1)  (0) 2014.02.02

다른 카테고리의 글 목록

프로그래밍/C언어 카테고리의 포스트를 톺아봅니다