포인터에서

int *a;

int b=3;

a=&b;

printf("%d",*a);

출력 : 3

이 때는 a가 a의 주소값이고 *a가 a가 가리키는 값을 나타내는 거잖아요


근데 왜

char *a;

a= "abcd";

printf("%s",a)

printf("%d",*a)

출력 : abcd 97


왜 여기서는 a가 a가 가리키는 값인 abcd를 출력하고 *a가 주소값을 출력하나요?


왜 위의 경우랑 반대로 작동하는거죠?