•
선언에 따른 구분
◦
지역 변수 local variable
함수 안에 선언
◦
전역 변수 global variable
함수 밖에 선언
◦
정적 변수 static variable
static 키워드와 함께 함수 안과 밖에 선언
static 데이터형 변수명;
•
사용 범위 구분
◦
지역 변수
함수 안에서만 사용 가능
◦
전역 변수
프로젝트 전체에서 사용 가능
전역변수가 선언된 파일 안에서 모두 사용할 수 있다.
◦
정적 변수
선언된 함수 안과 해당 파일에서만 사용 가능
함수 안에서는 지역변수의 성향이 있지만 종료는 프로그램이 종료될때 같이 종료 된다.
•
사용 범위에 따른 예 : 지역변수
함수 안에서만 사용
#include <stdio.h>
void func(int var1){
int var2 = 10;
printf("%p %p\n", &var1, &var2);
}
int main(void){
int var1 = 30;
func(var1);
printf("%p\n", &var1);
return 0;
}
C
복사
•
사용 범위에 따른 분류 예 : 전역 변수
함수 밖에 선언된 변수로 주로 상단에 위치
#include <stdio.h>
#include <stdlib.h>
int g_var; // 기본적으로 0으로 초기화가 된다
void func(){
g_var++;
}
int main(void){
printf("%d\n", g_var);
func();
printf("%d\n", g_var);
return 0;
}
C
복사
•
사용 범위에 따른 분류 예 : 정적 변수(1)
◦
함수 밖에 선언되며 전역변수와 동일한 기능
단, 선언된 파일 안에서만 전역적으로 사용
// 함수 밖에 선언된 경우
#include <stdio.h>
#include <stdlib.h>
static int g_var; // 0으로 초기값이 설정이된다.
void func(){
g_var++;
}
int main(void){
printf("%d ", g_var);
func();
printf("%d ",g_var);
return 0;
}
C
복사
•
사용 범위에 따른 분류 예 : 정적 변수(2)
◦
함수 안에서 사용될 때는 프로그램이 종결될 때까지 값 유지
// 함수 안에서 사용될 경우
#include <stdio.h>
#include <stdlib.h>
void func(){
static int var;
printf("%d\n", var++);
}
int main(void){
func();
func();
func();
func();
return 0;
}
C
복사
사용 범위에 따른 변수
Default view
Search
•
초기값
◦
지역 변수 : 이전 메모리에 남아 있던 임의의 값으로 초기화
◦
전역 변수 : 0
◦
정적 변수 : 0
•
초기값 확인
#include <stdio.h>
#include <stdlib.h>
int g_globalvar;
static int g_staticglobalvar;
int main(void){
static int staticvar;
int var;
printf("%d %d %d %d\n", g_globalvar, g_staticglobalvar, staticvar, var);
return 0;
}
C
복사