프로그래밍 언어/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