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 |