8 - Variable
<학습하기>
변수의 종류.
1. 내부변수(internal variable)
함수 내부 또는 블럭 내부에서 선언된 변수.
범위 : 해당 함수 또는 해당 블럭 안
중복된 블럭 안에 여러개의 같은 이름의 변수가 존재할 경우,
가장 가까운 바깥쪽의 변수가 사용된다.
ex)
main()
{
int internal = 1;
{
int internal = 2;
{
int internal = 3;
printf("%d\n", internal); // 3출력
}
printf("%d\n", internal); // 2 출력
}
printf("%d\n", internal); // 1 출력
}
단, 이렇게 중복된 블럭 같은 이름은 만드는 것은 프로그램의 가독성을 저하시키므로
사용하지 않는 것이 좋음.
수명: 해당 변수가 선언될 때 만들어짐.
해당 함수 또는 해당 블럭에서 나갈 때 파괴됨.
2.외부변수(global variable)
함수 밖에서 선언된 변수
범위 : 프로그램 전체
수명 : 프로그램 실행 시 만들어짐.
프로그램 종료시 파괴됨.
주의점
프로그램 어디서든 접근이 가능하므로,
이 변수에 잘못된 값이 들어갔다면, 오류를 찾기 위해 프로그램 전체를 뒤져야 한다.
그러므로 외부변수는 가능하면 사용하지 않는 것이 좋다.
3.정적변수
함수 안 또는 블럭 안에서 static 키워드와 함께 선언되는 변수.
범위 : 내부변수와 동일.
수명 : 최초로 변수가 만들어질 때 생성
프로그램이 종료될 때 파괴.
함수의 실행과 관계없이 계속 값이 유지된다.
<실습하기>
#include <stdio.h>
void FuncA();
void Counter();
int globalVar; // 전역변수
main()
{
int intVar = 10;
globalVar = 10;
FuncA();
printf("main() intVar : %d\n", intVar);
printf("main() globalVar : %d\n", globalVar);
Counter();
Counter();
Counter();
Counter();
Counter();
}
void FuncA()
{
int intVar = 20;
globalVar = 20;
}
void Counter()
{
int intVar = 0;
static int staticVar = 0;
++intVar;
++staticVar;
printf("intVar:%d staticVar:%d\n", intVar, staticVar);
}
변수의 종류.
1. 내부변수(internal variable)
함수 내부 또는 블럭 내부에서 선언된 변수.
범위 : 해당 함수 또는 해당 블럭 안
중복된 블럭 안에 여러개의 같은 이름의 변수가 존재할 경우,
가장 가까운 바깥쪽의 변수가 사용된다.
ex)
main()
{
int internal = 1;
{
int internal = 2;
{
int internal = 3;
printf("%d\n", internal); // 3출력
}
printf("%d\n", internal); // 2 출력
}
printf("%d\n", internal); // 1 출력
}
단, 이렇게 중복된 블럭 같은 이름은 만드는 것은 프로그램의 가독성을 저하시키므로
사용하지 않는 것이 좋음.
수명: 해당 변수가 선언될 때 만들어짐.
해당 함수 또는 해당 블럭에서 나갈 때 파괴됨.
2.외부변수(global variable)
함수 밖에서 선언된 변수
범위 : 프로그램 전체
수명 : 프로그램 실행 시 만들어짐.
프로그램 종료시 파괴됨.
주의점
프로그램 어디서든 접근이 가능하므로,
이 변수에 잘못된 값이 들어갔다면, 오류를 찾기 위해 프로그램 전체를 뒤져야 한다.
그러므로 외부변수는 가능하면 사용하지 않는 것이 좋다.
3.정적변수
함수 안 또는 블럭 안에서 static 키워드와 함께 선언되는 변수.
범위 : 내부변수와 동일.
수명 : 최초로 변수가 만들어질 때 생성
프로그램이 종료될 때 파괴.
함수의 실행과 관계없이 계속 값이 유지된다.
<실습하기>
#include <stdio.h>
void FuncA();
void Counter();
int globalVar; // 전역변수
main()
{
int intVar = 10;
globalVar = 10;
FuncA();
printf("main() intVar : %d\n", intVar);
printf("main() globalVar : %d\n", globalVar);
Counter();
Counter();
Counter();
Counter();
Counter();
}
void FuncA()
{
int intVar = 20;
globalVar = 20;
}
void Counter()
{
int intVar = 0;
static int staticVar = 0;
++intVar;
++staticVar;
printf("intVar:%d staticVar:%d\n", intVar, staticVar);
}
댓글
댓글 쓰기