51. C++ 주소 연산자 (&
)
1. 개요
1.1 문서 개요
이 문서는 C++에서 변수의 메모리 주소를 획득하는 데 사용되는 주소 연산자 &
에 대해 설명합니다. 해당 연산자는 포인터 개념 및 메모리 조작을 위한 기반 도구로, 변수와 포인터 간의 관계를 정의하고 다양한 저수준 프로그래밍 기술에서 핵심적인 역할을 합니다.
2. 내용
2.1 주소 연산자 &
의 의미와 사용법
2.1.1 기본 개념
C++에서 주소 연산자 &
는 변수 앞에 붙어서 해당 변수의 메모리 주소를 반환합니다. 이는 포인터 변수에 값을 할당하거나 함수에 참조로 인자를 전달할 때 사용됩니다.
int x = 10;
int* ptr = &x; // x의 주소를 ptr에 저장
이 예제에서 &x
는 변수 x
의 주소를 반환하며, 이 주소는 포인터 ptr
에 저장됩니다.
2.1.2 주소 연산자와 참조자 구문 구별
&
연산자는 참조자를 선언할 때도 사용되며, 이 경우는 주소 연산자가 아닌 참조 선언 연산자로 해석됩니다.
int a = 5;
int& ref = a; // 참조자 선언
이와 같은 문맥에서는 &
가 주소 연산자가 아니라 참조자 생성의 의미를 갖습니다.
2.2 함수에서의 주소 연산자 활용
주소 연산자는 포인터 인자를 사용하는 함수에서 특히 자주 사용됩니다.
void increment(int* p) {
(*p)++;
}
int main() {
int n = 3;
increment(&n); // n의 주소 전달
}
이 코드에서는 increment
함수가 포인터 인자를 받아 값을 간접 참조 방식으로 변경하며, &n
을 통해 변수 n
의 주소를 인자로 전달합니다.
3. 마무리
주소 연산자 &
는 변수의 메모리 주소를 획득할 수 있게 하며, 포인터 선언, 참조, 함수 인자 전달 등에서 핵심적인 역할을 수행합니다. &
는 문맥에 따라 주소 연산자 또는 참조 선언자 역할을 하므로 구문 해석 시 주의가 필요합니다.