The & operator obtains an object address. A pointer stores an address of a compatible type. Applying * to a valid pointer accesses the pointed-to object. Changing *p here changes value, because p points to value.
Read the example
The complete program appears below. Read it first, predict the output, then run it.
Expected output
Value: 25
Practise
Create a second integer and redirect p to it before assigning through *p.
Common mistake
Do not dereference an uninitialized, null or expired pointer. The pointed-to object must still exist.