:: ADVANCE ::
[C] auto, static, extern 키워드 의미 본문
반응형
[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