For any object (i.e, variable, array, union, struct, pointer or function) the unary address operator can be used to access the address of that object.
int i = 1; int *p = NULL;
So then a statement
p = &i;, copies the address of the variable
i to the pointer
It's expressed as
p points to
printf("%d\n", *p); prints 1, which is the value of