想问下当函数形参是指针时,printf函数里面什么时候带*号,下图这个例子

这里为什么没有*号也能输出TOM,带了*号就会错误

这里是自定义函数,ptr相当于printhello函数

这个其实是数组和指针的关系。其实从某种程度上来说,数组和指针很相似。数组名存储的就是数组第一个元素的地址,也就是说 name = &name[0]。如果你写 *name 的话,其实就是等于 name[0]。这个就是一个字符了,而不是一个字符数组了,所以你必须用 %c。如果你想打印字符数组的话,就得传字符数组的首地址,c 语言会在遇到 '\0' 的时候停下来的。

ptr 就是函数的指针。 

因为你输出的是%s,表示你输出的是字符串。这时候当然直接name就行。

如果你输出单个字符%c,就需要*name表示你输出了指针name指向的单个字符

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y

 也许对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html