선물공룡디보 2021. 8. 1. 01:11

스토리지클래스

      스토리지 클래스란
    • 변수나함수를선언할때사용되는키워드
    • 변수나 함수의 저장 위치와 사용 범위를 결정
    • 변수의디폴트기억부류는auto이고, 함수의디폴트기억부류는exter
    • 기억부류 데이터형 변수명;
    • 기억부류 리턴형 함수형(매개변수 리스트);

global 변수

extern int global; //메모리는 할당하지 않고 사용 범위만 늘려줌
void TestGlobal(void){
  global = 10; //전역 변수를 사용할수 있음
}
int global = 0
int main(void){
	global = 20
}

int global = 0;
void TestGlobal(void)
{
  global = 10; //전역 변수를 사용할수 있음
}

Test2.c
extern int global; //전역변수의 extern 선언
int main(void)
{
	global = 20;
}

정적 변수

    정적 지역 변수
  • 키워드 : static
  • 번역과정의 마지막단계인적재 시간에 기억장소를할당받는변수
  • 전체 프로그램의 시작부터 종료까지를 생존 기간으로 하며 동일 기억 장소를 유지
  • 정적지역 변수는전역 변수처럼프로그램이 시작할때 메모리에 할당되고프로그램이종료할 때해제
//정적전역 변수는전역 변수를다른소스 파일에서접근하지못하도록제한
//정적 전역 변수는 정적 전역 변수가 선언된 소스 파일에서만 사용

Test1.c
int global1; //전역변수 선언
static int global2; //전역변수 선언
int main(void)
{
  global1 = 10;
  global2 = 20;
}

Test2.c
extern int global1;
extern int global2; //exturn 을 선언해도 사용할 수 없음
void f(void)
{
  global1 = 30;
  global2 = 40;
}