The address operator wouldn't be of much use if C++ didn't provide some way of using the address to get to the value at the address.
That is, if we only have the address of the details, how do we actually access the details.
The dereferencing operator is a unary operator *. It is also a prefix operator (comes before its single operand). It uses the same operator symbol as the binary multiplication operator, but its meaning is quite different.
If p has type pointer to int, then the dereferencing operator applied to p:
*p
serves as an expression that represents not p's value, but indirectly the int value at the address stored in p.
For example, given the declarations with initialization
int x = 5; int *p = &x; double y = 3.5; double *q = &y;
both x and y can be changed indirectly by using the pointer variables p and q and the dereferencing operator *
A good way to think of this is that *p is an alias for x and *q, an alias for y. So the assignments using *p and *q above are equivalent to:
x = 10; y = y + 1.0;