선언에 따른 구분
지역 변수 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;
}
사용 범위에 따른 분류 예 : 전역 변수
함수 밖에 선언된 변수로 주로 상단에 위치
#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;
}
사용 범위에 따른 분류 예 : 정적 변수(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;
}
사용 범위에 따른 분류 예 : 정적 변수(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;
}