Are pointers the same as addresses?

Since pointers point to data, can it point to program’s code?

What’s the difference between

int *p = &i; & *p = &i;?

How to print an address of a pointer in hexadecimal form?

How to use const to disable changing a parameter’s pointer’s values & a pointer’s address?