728x90
[Do it C++ 완전정복_ 131~138p]
정적 변수 (static)
- 프로그램이 처음 실행될 때 한 번만 초기화된다. (명시적 초기화가 없으면 자동으로 0으로 초기화)
- 프로그램 종료 시까지 메모리에 유지된다.
- 함수가 여러 번 호출되어도 이전 값이 유지된다.
#include <iostream>
using namespace std;
void counter() {
static int count = 0; // 정적 변수
count++;
cout << "count = " << count << endl;
}
int main() {
counter();
counter(); // 이전 값이 유지되어 2까지 증가
}
정적 변수의 수명주기
- 프로그램 시작 시, 정적 변수는 데이터(Data) 영역에 할당되어 한 번만 초기화된다.
- 프로그램이 끝날 때 정적 변수의 메모리가 소멸된다.
- https://slowbreeze.tistory.com/232
정적 변수 사용이유
공유되고 값이 유지되는 변수를 선언하고 싶지만, 특정 클래스나 함수 내부에서만 접근하고 싶을 때 사용한다.
예를 들어 어떤 클래스가 얼마나 많은 객체를 생성했는지 셀 때 유용하다.
상수 변수 (const)
- 한 번 초기화되면 값을 변경할 수 없는 변수로 읽기 전용 데이터로 사용된다.
- 반드시 선언과 동시에 초기화해야 한다.
const int MAX = 100; // 상수
포인터 변수의 상수
- 포인터와 const의 위치에 따라 상수화 되는 대상이 달라지니 주의!
| 선언 형태 | 의미 | 변경 가능 여부 |
| const int* p | 포인터가 가리키는 값이 상수 | O (주소 변경 가능) / ✗ (값 변경 불가) |
| int* const p | 포인터 자체가 상수 | ✗ (주소 변경 불가) / O (값 변경 가능) |
| const int* const p | 주소와 값 모두 상수 | ✗ (둘 다 불가) |
int a = 10, b = 20;
const int* p1 = &a; // *p1 수정 불가, p1은 다른 주소 가능
int* const p2 = &a; // *p2 수정 가능, p2는 다른 주소 불가'C++ > C++ 문법' 카테고리의 다른 글
| C/C++ 메모리 구조 (0) | 2025.10.13 |
|---|---|
| C++ 동적 메모리 할당/해제 (new, delete) (0) | 2025.10.13 |
| C++ 함수와 매개변수 (0) | 2025.10.13 |
| C++ 포인터(메모리 주소를 저장하는 변수)와 배열 (0) | 2025.10.13 |
| C++ 연산자와 연산자 우선순위 (0) | 2025.10.13 |