스토리지 클래스는 변수의 범위, 수명 및 바인딩을 지정합니다.
변수를 완전히 정의하려면 '유형'뿐만 아니라 저장 클래스도 언급해야 합니다.
변수 이름은 변수 값을 저장하기 위해 비트 모음이 할당되는 컴퓨터 메모리 내의 물리적 위치를 식별합니다.
스토리지 클래스는 다음 요소를 알려줍니다. -
- 변수가 저장되는 위치(메모리 또는 CPU 레지스터)
- 초기화되지 않은 경우 변수의 초기 값은 무엇입니까?
- 변수의 범위(접근 가능한 위치)는 무엇입니까?
- 변수의 수명은 어떻게 됩니까?
평생
변수의 수명은 컴퓨터가 해당 변수에 대해 메모리를 할당하는 기간(메모리 할당과 할당 해제 사이의 기간)을 정의합니다.
C 언어에서 변수는 자동, 정적 또는 동적 수명을 가질 수 있습니다.
- 자동 − 자동 수명이 있는 변수가 생성됩니다. 매번 그들의 선언은 만나서 파괴됩니다. 또한 블록이 종료됩니다.
- 정적 − 선언이 처음 실행될 때 변수가 생성됩니다. 실행이 중지/종료되면 소멸됩니다.
- 동적 − 변수 메모리는 메모리 관리 기능을 통해 할당 및 해제됩니다.
스토리지 클래스
C 언어에는 4가지 스토리지 클래스가 있습니다 -
스토리지 클래스 | 저장 영역 | 기본 초기값 | 평생 | 범위 | 키워드 |
---|---|---|---|---|---|
자동 | 메모리 | 통제가 차단될 때까지 | 통제가 차단될 때까지 | 로컬 | 자동 |
등록 | CPU 레지스터 | 쓰레기 값 | 통제가 차단될 때까지 | 로컬 | 등록 |
정적 | 메모리 | 0 | 함수 호출 사이의 값 | 로컬 | 정적 |
외부 | 메모리 | 쓰레기 값 | 전체 프로그램 실행 | 글로벌 | 외부 |
예시
다음은 자동 저장 클래스에 대한 C 프로그램입니다 -
#include<stdio.h> main ( ){ auto int i=1;{ auto int i=2;{ auto int i=3; printf ("%d",i) } printf("%d", i); } printf("%d", i); }
출력
위의 프로그램이 실행되면 다음과 같은 출력을 생성합니다 -
3 2 1
예시
다음은 외부 스토리지 클래스에 대한 C 프로그램입니다 -
#include<stdio.h> extern int i =1; /* this ‘i’ is available throughout program */ main ( ){ int i = 3; /* this ‘i' available only in main */ printf ("%d", i); fun ( ); } fun ( ) { printf ("%d", i); }
출력
위의 프로그램이 실행되면 다음과 같은 출력을 생성합니다 -
3 1