I think this example will make clear the difference between a pointer and an array..
Code:
char charr[]="This";
char *chptr="This";
printf("%u",&charr);//This will print starting address of string "This". charr takes no space to get store.
printf("%u",&chptr);// This will print the address of pointer chptr while this is not starting from there and it's taking space 4byte in gcc to store address..