예전/C, C++

[C/C++] 변수 (지역, 전역, static, extern)

showmiso 2012. 10. 16. 10:00



지역 변수


생명 주기가 중괄호 시작부터 끝 까지이고, 사용도 그 중괄호 내에서만 가능하다.



전역 변수


중괄호 밖에 선언하며, 자동으로 0으로 초기화 된다.

생명주기는 프로그램 시작부터 종료까지이다.



정적 변수 (Static 변수)


전역 변수와 같은 생명주기를 갖고, 마찬가지로 자동으로 0으로 초기화 된다.

만약 임의로 초기화를 해줄 때에는 반드시 상수로 초기화 해야한다.


정적 변수는 중괄호 내에서 1번만 초기화 된다.


어떤 중괄호 내에서 정적 변수 선언시 그 중괄호 내에서만 쓸 수 있으며, 이런 정적 변수를 정적 지역 변수라고 한다.



extern 은 외부 변수를 사용할 때, 붙이는 키워드이다. 만약 변수 앞에 static을 쓰면, extern을 써도 다른 곳에서 참조할 수 없다. 

이러한 정적 변수를 정적 전역 변수라고 한다.



참고로, extern 이 외부 변수 사용할 때, 쓰는 것이라고 해서 무분별하게 사용한다면,

변수 이름의 충돌과, 공유 자원에 대한 잘못된 접근을 일으켜 프로그램 파일 또는 함수의 독립성을 떨어트린다.