스토리지 클래스
스토리지 클래스
기억부류(스토리지 클래스)
변수나 함수를 선언할 때 사용되는 키워드
01. 변수나 함수의 저장 위치와 사용 범위를 결정
02. 변수나 함수 선언 시 맨 앞에 지정
03. 변수의 디폴트 기억 부류는 auto이고, 함수의 디폴트 기억 부류는 extern
auto 변수
지역 변수는 디폴트로 auto 기억 부류를 사용
auto 지역 변수는 선언된 위치에서 자동으로 생성되고,
선언된 블록을 빠져나갈 때 자동으로 해제됨
전역 변수에는 auto 지정 불가
for 루프에서 선언 시 루프 내에서만 통용
register 변수
01. 변수를 메모리에 할당하는 대신CPU의 레지스터에 할당
02. 변수를 레지스터에 할당하면 변수에 좀 더 빠르게 접근
03. 보통 루프 제어 변수를 레지스터 변수로 선언
04. register 변수로 선언해도 변수가 레지스터에 할당되지 않을 수 있음
05. 레지스터 변수에 대해서는 주소 구하기 연산자를 사용할 수 없음
global 변수
01. 다른 곳에 선언된 변수에 대하여 별도의 메모리 할당 없이 해당
변수를 사용
02. 전역 변수를 코드 중간에 선언하면, 전역 변수가 선언된 뒤쪽에
정의된 함수에서만 전역 변수를 사용 가능
전방 선언(Forward Declaration) : 전역 변수에 대한 extern 선언이 있으면
전역 변수가 선언된 위치와 관계없이 전역 변수 사용 가능
정적 변수
정적 지역 변수
키워드 : static
01. 번역 과정의 마지막 단계인 적재 시간에 기억 장소를 할당받는 변수
02. 전체 프로그램의 시작부터 종료까지를 생존 기간으로 하며
동일 기억 장소를 유지
03. 초기화는 기억 공간 할당 시 한 번만 초기화됨
정적 전역 변수
정적 전역 변수는 정적 전역 변수가 선언된 소스 파일에서만 사용
정적 전역 변수는 전역 변수를 다른 소스 파일에서 접근하지 못하도록 제한
스토리지 클래스 비교
★핵심요약★
기초 이해
- 지역 변수는 자동 변수임
- 자동 변수는 선언된 블록을 빠져나가면 소멸됨
- 레지스터 변수는 CPU의 레지스터에 할당되는 메모리로 빠른 액세스가 가능함
- 전역 변수는 프로그램 전체에서 통용되고 다른 파일에서도 통용 가능함
정적 변수
- 정적 지역 변수는 할당 시 한 번만 초기화되고 선언된 블럭을 빠져나가도
소멸되지 않음 - 정적 전역 변수는 프로그램 전체에서 사용 가능함
- 정적 변수는 할당 시 0으로 초기화됨