When used as a prefix operator, the * symbol is the dereferencing operator.
It should be applied to a pointer variable (or a pointer expression).
The result is an alias for what p is pointing to.
So *p in the example above is an alias for x.
Corrected Example:
int x = 5;
int y;
int * p = &x;
y = *p; // This is the same as y = x;
// It assigns x's value 5 to y.
*p = 6; // This is the same as x = 6;
// p's value is unchanged; it is still the address of x
// This changes x's value to be 6.