c语言 关于printf()和指针

2025-01-25 02:38:01
推荐回答(2个)
回答1:

p的类型是char *,这是printf要求字符串输出时提供的数据类型,即指针或地址,是字符串首字符地址
*p的类型是char,只是一个字符,而且是字符的内容(ASCII码),不是地址,与printf的%s要求提供的字符地址不符

回答2:

你要了解printf函数的实现逻辑,printf(const char* format,arg1,agr2,....)

*p只是单个字符,不能打印字符串,%s对应输入的是需要打印的地址,内部实现逻辑类似于

  • void printstr(const char *ptr)        //输出字符串  

  • {    

  • while(*ptr)    

  • {    

  • putchar(*ptr);    

  • ptr++;    

  • }    

  • }    

%c对应单个字符,此时可以打印*p,是不是指向首地址得看你是%c?还是%s