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

(2023-10-06)

C 언어 기억 클래스, Storage Class Specifier, 기억 클래스 지정자, 저장 유형 지정자, 기억 부류 지정자, auto 자동 변수


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)

     * [참고] C 언어에서, 전역 변수프로그램 시작시 자동으로 0 값으로 초기화됨


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. 기억 클래스  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"