공통점
- (지역 변수와 달리) 프로그램이 끝날 때까지 할당된 변수의 값과 메모리가 유지됨.
차이점
정적 변수 (Static Variable)
- 선언된 해당 파일, 함수 내에서만 접근 가능 ==>
내부 링크
- 초기화는 단 한번만 가능 (소스 파일에서만 초기화 가능)
- 선언 시 :
static
키워드를 반드시 사용해야 함
전역 변수 (Global Variable)
- 해당 프로그램의 모든 파일, 함수에서도 접근 가능 ==>
외부 링크
- 필요할 때마다 초기화를 언제든 몇번이든 가능
- 다른 파일에서 접근하지 않는 전역 변수 선언시에는 그냥 main 함수 바깥에 선언해주면 됨
- 다른 파일에서 접근하려면
extern
키워드로 변수를 선언해야 함// 전역 변수 사용 ex (외부 링크 시) int g_value; // 본문 내 선언 extern int g_value; // 다른 파일에서 extern으로 선언 후 외부에서 사용
cf. extern의 의미 : 다른 파일에서 이미 이름이 같은 전역 변수가 선언되었다는 의미 (공유)
const (상수)
- 초기화한 이후엔 절대로 값을 바꾸지 못하는 변수 (상수)
- 다시 값이 바뀌게 되면 컴파일 에러 메세지 출력
static (정적 변수)
- 선언 위치와 상관 없이, 프로그램 시작부터 끝까지 메모리에 할당되어 있어서 값을 마음대로 바꿀 수 있음
- 모든 객체가 접근 가능
- 즉, 새로운 객체 선언 없이 바로 외부에서 멤버 호출 가능!
- 단지 멤버들 모아두는 역할만 하는 클래스로 사용 가능
/*
CClass c;
c.method();
*/
CClass::method(); // static 함수는 외부에서 접근 가능
const static
- 정적 변수(static)를 상수화(const) 시킴
- 즉, 모든 객체에서 접근 가능한 상수 변수
'[ 언어 및 문법 ] > C, C++' 카테고리의 다른 글
[C++, OpenCV] Convert Arr2Mat, Mat2Arr / 16bit(short) to 8bit(unsigned char) / CV_type (0) | 2022.08.14 |
---|---|
[C++] 2차원 배열 동적 할당, 해제, 초기화 (0) | 2022.08.14 |
[C++] 전방 선언 (Forward Declaration) (0) | 2022.08.14 |
[C++] 포인터, 주소연산자(&), 배열, 동적할당, 자료형 + vs 참조형 변수(&) (0) | 2022.08.13 |
[C++] string 클래스와 문자열 입출력 (cin, getlline(), c_str(), atoi()) (0) | 2022.08.13 |