Storage Class   기억 클래스, 저장 클래스

(2019-06-23)

C 언어 기억 클래스, Storage Class Specifier, 기억 클래스 지정자, 저장 유형 지정자

1. 자료형, 기억 클래스 비교자료형(char,int,float 등) : 자료의 연산 성격(문자열 처리,사칙연산 등)과 크기를 지정
  ㅇ 기억 클래스(auto,static,register등) : 자료의 유효 범위(scope),유효 기간(lifetime) 지정


2. [C 언어]  기억 클래스 역할변수를 위한 기억장치 할당 관리의 효율화를 도모
     - 레지스터, 메모리, 스택 등 어디에 할당하느냐에 따라,
     - 변수의 유효범위(변수의 사용 범위),유효기간(변수의 생존 기간)이 달라지며,
     - 그에따라, 메모리의 효율적 관리가 가능해짐


3. [C 언어]  기억 클래스 구분                              ☞ Scope/Lifetime 참조

  ㅇ 유효기간(lifetime) : 메모리 할당 방식에 따른 구분
     - 정적 할당 : 프로그램 종료시까지 생존함
        . 정적 변수(static), 외부 변수(extern)
     - 동적 할당 : 변수선언된 블록이 끝나면 자동으로 소멸됨
        . 자동 변수(auto), 레지스터 변수(register)

  ㅇ 유효범위(scope) : 변수선언된 위치에 따라 구분
     - 지역 변수 : 블록 내부에서 선언변수로써, 해당 블록 내부에 만 한정됨
        . 자동 변수(auto), 레지스터 변수(register), 내부 정적 변수(inner static)
     - 전역 변수 : 블록밖에서 선언변수로써, 선언된 이후부터 전체에 걸쳐 사용 가능
        . 외부 정적 변수(extern static), 외부 변수(extern)


4. [C 언어]  기억 클래스 지정자 (storage class specifier)

  ㅇ auto : 자동 변수
     * 함수나 블록 내부에서 만 선언/사용되는 가장 일반적인 변수로서,
        . 지정자 auto 생략 가능
     - (할당방식) 동적 할당
     - (기억장소) 스택
     - (유효범위) 블록 내부
     - (유효기간) 블록 내부

  ㅇ register : 레지스터 변수
     * 요즈음에는 컴파일러가 알아서 CPU 레지스터를 사용하므로 사용 빈도 거의 없음
     - (할당방식) 동적 할당
     - (기억장소) 레지스터
     - (유효범위) 블록 내부
     - (유효기간) 블록 내부

  ㅇ static : (내부) 정적 변수
     * 지역 변수는 기본적으로 동적 할당이지만, 
        . 지정자 static을 붙여서 정적 할당으로 변경 가능 등
     - (할당방식) 정적 할당
     - (기억장소) 메모리
     - (유효범위) 블록 내부
     - (유효기간) 프로그램 종료시까지

  ㅇ static : (외부) 정적 변수
     - (할당방식) 정적 할당
     - (기억장소) 메모리
     - (유효범위) 변수 선언 이후부터 프로그램 전체
     - (유효기간) 프로그램 종료시까지

  ㅇ extern : 외부 변수
     - (할당방식) 정적 할당
     - (기억장소) 메모리
     - (유효범위) 외부 파일을 포함한 프로그램 전체
     - (유효기간) 프로그램 종료시까지

  ㅇ volatile 
     * 컴파일러가 volatile 변수에 관련된 문장최적화하지 말라는 지시어


[C 변수,상수,자료형] 1. C 변수 2. C 상수 3. C 자료형 4. C 형 변환 5. C 구조체 6. 기억 클래스 7. C 배열

 
        최근수정     요약목록     참고문헌