Maybe this will help you understand how things work.
#include <stdio.h>
int main(void)
{
char x, *a, *b = "Hello";
x = 'A';
a = &x;
printf("The character value stored in the address pointed to by 'a' is %c\n", *a);
printf("The address contained in the 'a' pointer variable is %p\n", a);
printf("The address of the 'a' pointer variable is %p\n", &a);
printf("The string literal pointed to by 'b' is %s\n", b);
printf("The address contained in the 'b' pointer variable is %p\n", b);
printf("The address of the 'b' pointer variable is %p\n", &b);
return 0;
}