프로그래밍 언어/C언어
스토리지 클래스 (auto, register, global)
김곰댕
2021. 12. 24. 16:12
728x90
1. 기억부류(스토리지 클래스)
변수나 함수를 선언할 때 사용하는 키워드
1) 변수나 함수의 저장 위치와 사용 범위를 결정 |
2) 변수나 함수 선언 시 맨 앞에 지정 |
3) 변수의 디폴트 기억 부류는 auto이고, 함수의 디폴트 기억 부류는 extem - 디폴트가 auto이므로 아무것도 적지 않고 int num;을 선언하면 사실은 auto int num;이 되는 것이다. |
형식 :
- 기억부류 데이터형 변수명;
- 기억부류 리턴형 함수형(매개변수 리스트);

2. auto 변수
지역 변수는 디폴트로 auto 기억 부류를 사용
- auto 지역 변수는 선언된 위치에서 자동으로 생성되고, 선언된 블록을 빠져나갈 때 자동으로 해제됨

3. register 변수
1) 변수를 메모리에 할당하는 대신 CPU의 레지스터에 할당 |
2) 변수를 레지스터에 할당하면 변수에 좀 더 빠르게 접근 |
3) 보통 루프 제어 변수를 레지스터 변수로 선언 - 레지스터 변수로 선언하면 변수에 좀 더 빠르게 접근이 가능하여 효율적인 코딩이 가능함 |
![]() |
4) register 변수로 선언해도 변수가 레지스터에 할당되지 않을 수 있음 - 시스템에 따라 register변수로 만들 수 있는 개수가 다름, 그 개수를 초과하면 register로 선언해도 스택에 저장될 수 있음 |
5) 레지스터 변수에 대해서는 주소 구하기 연산자를 사용할 수 없음 |
![]() |
4. global 변수
1) 다른 고셍 선언된 변수에 대하여 별도의 메모리 할당없이 해당 변수를 사용 |
2) 전역 변수를 코드 중간에 선언하면, 전역 변수가 선언된 뒤쪽에 정의된 함수에서만 전역 변수를 사용 가능 |
![]() |
3) 전방 선언 (Forward Declaration) |
- 전역 변수에 대한 extern 선언이 있으면 전역 변수가 선언된 위치와 관계없이 전역 변수 사용 가능 |
![]() |
728x90