:: ADVANCE ::

[C] auto, static, extern 키워드 의미 본문

language/C | C++

[C] auto, static, extern 키워드 의미

KSJ14 2015. 12. 16. 02:56
반응형

[C] auto, static, extern 키워드 의미



C에서 변수는 값이 저장되는 메모리 영영기나 변수의 유효범위에 따라 구분되는데, 

auto, static, extern 이 세가지 키워드를 이용하여 구분할 수 있다.


1. auto ( 자동 범위 변수 )

  • 일반적인 지역 변수 형태, 블럭 안에서만 유효하며 블럭의 실행이 끝나면 소멸
  • 스택에 메모리 할당
  • 일반적으로 C에서 auto 키워드는 생략되어 있다. 아무 표시도 하지 않은 변수는 자동으로 auto와 같은 의미
  • C++에서 auto 키워드를 사용할 경우 -> 자동 타입 추론 이라는 완전히 다른 의미를 가진다. (주의)

2. static ( 정적 변수 )
  • 블럭 안에서만 유효한 값을 가지지만 자동 변수와 같이 없어지지 않고 블럭으로 다시 돌아왔을 때 이전 값을 다시 이용 가능
  • 정적 데이터 영역에 저장
  • 초기화를 생략하면 자동 0으로 초기화
  • static은 사용되는 위치에 따라 의미가 달라진다. (주의)
    • 내부 정적 변수 : 함수 내부의 변수에 static이 사용된 경우, 해당 변수는 함수 내부에서만 사용이 가능하지만, 프로그램이 실행되는 동안 계속 값이 유지된다.
    • 외부 정적 변수 : 함수 외부의 전역범위의 변수에 static이 사용된 경우, 해당 파일 내부에서는 전역변수처럼 사용되지만, 다른 소스파일에서는 참조할 수 없음


3. extern ( 외부 변수 )

  • 함수 밖의 전역 범위에 선언
  • 프로그램 전체에서 유효하고 다른 파일에서도 참조 가능
  • 초기화를 생략하면 0으로 자동 초기화
  • 정적 데이터 영역에 할당
  • extern 변수는 편리하지만 남발하면 프로그램을 복잡하게 만들고 나중에 유지보수하기 힘들기 때문에 사용을 최소화하는 것이 바람직하다.



[참고] http://www.letmecompile.com/c-auto-static-extern-%ED%82%A4%EC%9B%8C%EB%93%9C-%EC%9D%98%EB%AF%B8/


반응형

'language > C | C++' 카테고리의 다른 글

[C++] Class  (0) 2015.07.13
[C/C++] C++ 기능 3  (0) 2014.09.16
[C/C++] C++ 기능 2  (0) 2014.09.16
[C/C++] C++ 기능 1  (0) 2014.09.16
[C/C++] C와 C++  (0) 2014.09.16
Comments