Address operator &
The &
(address) operator yields a pointer
to its operand. The operand must be an lvalue, a function designator,
or a qualified name. It cannot be a bit field, nor can it have the
storage class register
.
If the operand is an lvalue or function, the resulting type is
a pointer to the expression type. For example, if the expression has
type int
, the result is a pointer to an object having
type int
.
If the operand is a qualified name and the member is not static, the result is a pointer to a member of class and has the same type as the member. The result is not an lvalue.
p_to_y
is defined as a pointer to an int
and y
as
an int
, the following expression assigns the address
of the variable y
to the pointer p_to_y
:
p_to_y = &y;
Beginning of C++ only.
int target;
int &rTarg = target; // rTarg is a reference to an integer.
// The reference is initialized to refer to target.
void f(int*& p); // p is a reference to a pointer
If
you take the address of a reference, it returns the address of its
target. Using the previous declarations, &rTarg
is
the same memory address as &target
.You may take the address of a register variable.
You can use the &
operator
with overloaded functions only in an initialization or assignment
where the left side uniquely determines which version of the overloaded
function is used.
End of C++ only.