Address-of 연산자:
문법
address-of-expression:
&
cast-expression
비고
단항 주소 연산자(&)는 피연산자의 주소(즉, 포인터)를 반환합니다. address-of 연산자의 피연산자는 비트 필드가 아닌 개체를 참조하는 함수 지정자 또는 lvalue일 수 있습니다.
address-of 연산자는 기본, 구조체, 클래스 또는 공용 구조체 형식의 변수 또는 아래 첨자 배열 참조와 같은 특정 lvalue 식에만 적용할 수 있습니다. 이러한 식에서는 상수 식(address-of 연산자를 포함하지 않는 식)을 식 주소 식에 추가하거나 뺄 수 있습니다.
함수 또는 lvalues에 적용된 경우 식의 결과는 피연산자 형식에서 파생된 포인터 형식(rvalue)입니다. 예를 들어 피연산자의 형식 char이면 식의 결과는 포인터 char형식입니다. 대상 또는 개체에 const 적용되는 address-of 연산자는 const type * 원래 개체의 형식을 계산하거나 volatile type *위치 type 로 계산 volatile 합니다.
참조되는 함수 버전이 명확할 때만 오버로드된 함수의 주소를 사용할 수 있습니다. 특정 오버로드된 함수의 주소를 가져오는 방법에 대한 자세한 내용은 함수 오버로드를 참조하세요.
주소 연산자가 정규화된 이름에 적용되는 경우 결과는 정규화된 이름이 정적 멤버를 지정하는지 여부에 따라 달라집니다. 이 경우 결과는 멤버 선언에 지정된 형식에 대한 포인터입니다. 정적이지 않은 멤버의 경우 결과는 정규화된 클래스 이름으로 표시된 클래스의 멤버 이름에 대한 포인터입니다. 정규화된 클래스 이름에 대한 자세한 내용은 기본 식을 참조하세요.
예: 정적 멤버의 주소
다음 코드 조각에서는 클래스 멤버가 정적인지 여부에 따라 연산자 주소 결과가 어떻게 다른지 보여 줍니다.
// expre_Address_Of_Operator.cpp
// C2440 expected
class PTM {
public:
int iValue;
static float fValue;
};
int main() {
int PTM::*piValue = &PTM::iValue; // OK: non-static
float PTM::*pfValue = &PTM::fValue; // C2440 error: static
float *spfValue = &PTM::fValue; // OK
}
이 예제에서 식 &PTM::fValue 은 정적 멤버이므로 형식 대신 형식 float PTM::*float *fValue 을 생성합니다.
예: 참조 형식의 주소
참조 형식에 address-of 연산자를 적용하면 참조가 바인딩된 개체에 연산자를 적용하는 것과 동일한 결과를 얻을 수 있습니다. 다음은 그 예입니다.
// expre_Address_Of_Operator2.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main() {
double d; // Define an object of type double.
double& rd = d; // Define a reference to the object.
// Obtain and compare their addresses
if( &d == &rd )
cout << "&d equals &rd" << endl;
}
&d equals &rd
예: 함수 주소를 매개 변수로
다음 예제에서는 address-of 연산자를 사용하여 함수에 포인터 인수를 전달합니다.
// expre_Address_Of_Operator3.cpp
// compile with: /EHsc
// Demonstrate address-of operator &
#include <iostream>
using namespace std;
// Function argument is pointer to type int
int square( int *n ) {
return (*n) * (*n);
}
int main() {
int mynum = 5;
cout << square( &mynum ) << endl; // pass address of int
}
25
참고하십시오
단항 연산자가 있는 식
C++ 기본 제공 연산자, 우선 순위 및 결합성
Lvalue 참조 선언자: &
간접 참조 및 주소 연산자