개발 노트

[C/C++] 변수 선언의 기본

무병장수권력자 2009. 5. 22. 16:15
C/C++ 변수 선언의 기본

작성자 : 김문규
최초 작성일 : 2009.5.21

변수 선언, 기본중에 기본인데 의외로 헷갈립니다. 기초를 잘 정리하셔야 나중에 후환이 없습니다. 저장 위치, lifetime, linkage의 측면에서 표로 정리해 보았습니다.


(storage-class-specifier)  (type-qualifier)  type-specifier
 
  1. Storage class specifier
  • 저장 장소에 따른 분류 구분입니다.

 

저장위치

lifetime

linkage

비고

auto

stack

local

no-linkage

기본값

register

register

local

no-linkage

컴파일러에 따라서 register 저장할 수도 아닐 수도 있음

static

static data

global

내부 선언
: no-linkage

외부 선언
: internal-linkage

변수가 선언된 파일 내부로 한정되는

extern

 static data 참조

global

external-linkage

link time 동적으로 바인딩

 

  • internal level static vs. internal level auto
    • static으로 선언한 경우에는 함수를 빠져 나가도 값이 유지되며, 해당 함수를 재실행하여도 값이 그대로 유지됨
  • external level static vs. external level 키워드 생략(global)
    • static으로 선언한 경우에는 해당 파일에서만 사용 가능, global 전체 프로그램에서 사용 가능
  1. Type qualifier
  • const : 해당 변수, 객체를 수정할 없음
  • volatile : 해당 변수, 객체를 수정할 있음 (기본값)

 

  1. Type-specifier
  • void, char, short, int, long, double, struct, union, enum...