p的类型是char *,这是printf要求字符串输出时提供的数据类型,即指针或地址,是字符串首字符地址
*p的类型是char,只是一个字符,而且是字符的内容(ASCII码),不是地址,与printf的%s要求提供的字符地址不符
你要了解printf函数的实现逻辑,printf(const char* format,arg1,agr2,....)
*p只是单个字符,不能打印字符串,%s对应输入的是需要打印的地址,内部实现逻辑类似于
void printstr(const char *ptr) //输出字符串
{
while(*ptr)
{
putchar(*ptr);
ptr++;
}
}
%c对应单个字符,此时可以打印*p,是不是指向首地址得看你是%c?还是%s