상세 컨텐츠

본문 제목

[컴퓨터프로그래밍] 변수의 속성(범위, 생존 기간, 연결)과 지정자

C/개념 정리

by uzichoi 2024. 11. 7. 12:48

본문

  • 변수의 속성 3가지: 범위(전역 or 지역), 생존 기간(정적 할당 or 자동 할당), 연결(외부 or 내부)
  • 전역 변수: 범위: 프로그램 시작~종료 / 생존 기간: 정적 할당 / 연결: 외부 연결 / 0으로 자동 초기
  • 정적 지정자(static): 전역 변수, 지역 변수 앞에 모두 붙일 수 있다. 프로그램이 종료되어도 자동 소멸되지 않고 남아있다. 0으로 자동 초기화되며, 초기화는 단 한 번만 수행된다. 내부 연결만 가능하다.
  • 정적 전역: 함수 외부 정의 / 전역 변수(외부연결 불가) / 프로그램의 시작~종료(정적 할당)
  • 정적 지역: 함수 내부 정의 / 지역 변수 / 블록의 시작~종료(자동 할당)
  • 레지스터 지정자(register): 지역 변수에만 사용 가능하다. 데이터를 메모리가 아닌 CPU의 일부분인 레지스터에 저장하여 읽고 쓰는 속도가 매우 빠르다. 블록의 시작과 함께 레지스터에 할당되고 블록이 종료됨과 동시에 레지스터에서 제거된다. 레지스터 변수에 주소 연산자 &을 적용하면 컴파일 오류가 발생함을 유의하자. 레지스터에는 주소가 없기 때문이다.
  • 레지스터: 함수 내부 정의 / 지역 변수 / 자동 할당
  • 볼레타일 지정자(volatile): 하드웨어가 수시로 변수의 값을 변경하는 경우에 사용한다. 문장을 실행할 때마다 변수의 값을 메모리에서 새롭게 읽어와야 한다. volatile로 지정하는 컴파일러는 최적화를 중지한다. 
  • 외부 연결(extern): 다른 소스파일에서 변수를 정의 및 초기화하고 다른 파일에서 참조한다. 기본적으로 모든 전역 변수는 외부 연결이 가능하다. extern으로 정의된 변수에는 저장공간이 할당되지 않는다.

관련글 더보기