53. C++ 간접 참조 (*p
)
1. 개요
1.1 문서 개요
이 문서는 C++에서 포인터를 통해 변수에 접근하는 연산자인 간접 참조(*p
)에 대해 설명합니다. 간접 참조 연산자는 포인터가 가리키는 실제 데이터를 읽거나 수정할 수 있게 하며, 포인터 연산의 핵심 메커니즘을 구성합니다.
2. 내용
2.1 간접 참조 연산자 *
의 의미
2.1.1 기본 예시
int x = 5;
int* p = &x;
*p = 10; // x의 값을 10으로 변경
위 코드에서 *p
는 p
가 가리키는 메모리 주소에 저장된 값을 의미하며, 이를 통해 x
의 값을 직접 변경할 수 있습니다.
2.1.2 읽기 및 쓰기 가능성
간접 참조는 읽기와 쓰기 모두 가능하며, 포인터가 유효한 주소를 가리키는 경우에만 사용해야 합니다.
int value = *p; // 값 읽기
*p = 20; // 값 쓰기
2.2 함수 내에서의 포인터 사용
간접 참조는 함수 인자로 포인터를 전달받았을 때 원본 값을 수정하는 데 사용됩니다.
void setZero(int* ptr) {
*ptr = 0;
}
이처럼 *ptr
을 통해 함수 내부에서 외부 변수의 값을 수정할 수 있습니다.
2.3 중첩 포인터에서의 간접 참조
int x = 5;
int* p = &x;
int** pp = &p;
**pp = 7; // x를 7로 변경
**pp
는 pp
가 가리키는 p
, 그 p
가 가리키는 x
에 접근하는 형태로, 여러 단계의 간접 참조도 지원됩니다.
3. 마무리
간접 참조 연산자 *
는 포인터가 가리키는 실제 메모리 위치에 접근하거나 값을 변경하는 데 사용됩니다. 함수, 포인터 연산, 다중 포인터 등 다양한 맥락에서 활용되며, 유효한 포인터에 대해서만 사용해야 합니다.