변수나 함수의 저장위차와 사용범위를 결정
변수나 함수 선언시 맨 앞에 지정
변수의 디폴트 기억 부류는 auto이고, 함수의 디폴트 기억 부류는 extern
기억 부류 데이터형 변수명;
기억부류 리턴형 함수형(매개변수 리스트);
2. auto변수
지역변수는 디폴트로 auto 기억 부류를 사용
- auto 지역 변수는 선언된 위치에서 자동으로 생성되고, 선언된 블록을 빠져나갈 때 자동으로 해제됨
for 루프에서 선언시 루프내에서만 통용
3. register 변수
변수를 메모리에 할당하는 대신 cUP의 레지스터에 할당
변수를 레지스터에 할당하면 변수에 더 빠르게 접근
보통 루프 제어 변수를 레지스터 변수로 선언
register 변수로 선언해도 변수가 레지스터에 할당되지 않을 수있음
레지스터 변수에 대해서는 주소 구하기 연산자를 사용할 수 없음
4. global 변수
다른 곳에 선언된 변수에 대하여 별도의 메모리 할당 없이 해당 변수를 사용
전역 변수를 코드중간에 선언하면, 전역 변수가 선언된 뒤쪽에 정의된 함수에서만 사용 가능
# 정적 지역 변수
1. 정적 지역 변수
키워드 : static
번역 과정의 마지막 단계인 적재 시간에 기억 장소를 할당 받는 변수가
전체 프로그램의 시작부터 종료까지를 생존 기간으로 하며 동일 기억 장소를 유지보수
초기화는 기억 공간 할당 시 한 번만 초기화됨
정적 지역 변수는 전역 변수처럼 프로그램이 시작할 때 메모리에 할당되고 프로그램이 종료할 때 해제
전역 변수와는 달리 정적 지역 변수는 선언된 함수 안에서 만 사용
정적 지역변수는 함수가 리턴하더라도 해제되지 않고 남아 있다가 그 다음 함수 호출시 그대로 다시 이용
2. 정적 전역 변수
정적 전역 변수는 정적 전역 변수가 선언되 소스 파일에서만 사용
정적 전역 변수는 변수를 다른 소스 파일에서 접근하지 못하도록 제한