为什么没有输出呢?

sweetswing 2019-06-01 05:31:37
what is the output of this code?
char *str="12345";
printf("%s",*str);


A 12345
B 1
C No output.
D 5

正确答案是C

我觉得是12345
指针指向12345嘛

...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
marwi_study 2019-06-03
  • 打赏
  • 举报
回复
%s是要输出一个以\0结尾的字符串,在使用时要用字符串的首地址,这里*str是取了一个1,%s会把1当成一个地址。而1是一个非法地址,所以就没有输出咯
kTWO菜鸟 2019-06-01
  • 打赏
  • 举报
回复
楼主过要搞清楚 *str和str的区别哦 在线测试: https://code.y444.cn/gcc.html?share_id=bae40feceb3e3695fd291be6c16456ff *str是取地址里面的值哦,如果不加*默认是字符串首地址。 printf函数占位符对应的应该是字符串的首地址,而不是字符串值。
红颜若雪 2019-06-01
  • 打赏
  • 举报
回复
我认为*str的值是1,然后printf("%s",*str);就变成printf("%s",1);打印内存地址为1开始的内存,肯定会报错,非法内存访问。

69,371

社区成员

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

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