指针问题

学码就是爱好 2020-09-25 09:54:22
#include <stdio.h>
//#include <string.h>

int main(void)
{
char a[]="Boy";
char*p=a;
printf("%s %c\n",p,p[0]);//为什么printf("%s %c\n",p,p)中%c与p不能匹配获得首字母
return 0;
}
...全文
68 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2020-09-26
  • 打赏
  • 举报
回复
printf(“%s %c\n”, p, *p); //p是地址,%c是字符,两者不是同一类型,*p才是才是首字母字符。注意p与*p的区别。
学码就是爱好 2020-09-26
  • 打赏
  • 举报
回复
明白了,道理一说就清楚了。感谢
qybao 2020-09-26
  • 打赏
  • 举报
回复
这是打印格式的区别,打印函数对不同格式做不同的转换处理。 %s是以字符形式(参照ascii码)打印首地址开始,‘\0’结束的内存信息,所以它需要一个首地址作为参数,所以传入p是可以的,‘\0’结束符会自动推算。 %c是打印一个字符,需要的参数是字符(ascii码信息)而不是地址,所以p不可以,*p才是地址所存的ascii码信息。
学码就是爱好 2020-09-26
  • 打赏
  • 举报
回复
p是地址我知道,为什么%s能识别,而%c不能

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧