저장클래스 (지속기간, auto, register, static, extern)

 

저장 클래스 (Storage Class - 분류)

 

C 언어에서 변수와 함수는 저장 클래스를 가진다. 저장 클래스는 변수와 함수의 지속기간(duration)과 유효범위(scope)를 명시해 준다. 저장 클래스의 설정이유는 변수와 함수에 지속기간과 유효범위를 부여함으로써 메모리를 효율적으로 사용하고 프로그래밍 오류를 줄이기 위해서이다.

저장 클래스에는 auto, register, static, extern의 네가지가 있다.

지속기간

지속기간은 프로그램의 실행 중에서 시간상으로 존재하는 기간을 말한다.

auto 클래스

 

auto 클래스는 가장 많이 사용되는 것으로 함수 내에서 저장 클래스를 명시하지 않고 사용되는 변수들이다.

 

auto 클래스의 변수는 함수 내에서 선언되어 함수 내에서 선언되어 함수가 실행을 시작할 때 생성되어 함수가 실행을 종료하면 소멸된다.

register 클래스

 

register 클래스는 컴파일러가 CPU 의 레지스터 중 하나를 이 변수로 사용하게 한다. 다라서 register 변수의 크기는 register의 크기보다 클 수 없다.

 

또 레지스터의 숫자가 작으므로 프로그램 내에서 register로 선언된 변수라도 컴파일러가 레지스터를 배정하지 않을 수 있다.

 

register 클래스고 suto 클래스와 마찬가지로 함수의 실행과 함게 생성되었다가 함수의 실행이 종료되면 소멸한다.

static, extern 클래스

 

static 클래스와 extern 클래스는 auto 클래스나 register클래스와는 달리 함수의 실행이 끝난뒤에도 남아있는 변수이다.

 

static클래스는 함수의 내우에서나 외부에서 모두 선언될 수 있고 extern 클래스는 함수의 외부에서만 선언된다.

 

static 변수는 초기화를 하지 않아도 시스템에 의해서 자동적으로 0이나 NULL로 초기화 된다.