C语言 printf("%s",p)

 我来答
舒适还明净的海鸥i
2022-07-03 · TA获得超过1.7万个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:68.9万
展开全部

char p 首先它是一个常量,如果是char p[10] = {};那么它就是一个变量。常量的值只可以读取不可以写入,变量的值可读可写。
在用printf语句打印%s的时候,printf语句要求提供字符串首地址。这是printf所规定的,也就是看到%s,printf就要求指针变量,而不是我们逻辑上认为的指针里面所存储的内容。所以用printf("%s",p);而不是printf("%s",
p); 这一点必须记住。如果用%c,想输出里面的内容就可以按照正常的指针概念,用*p了。可以执行一下这一条语句char * p = "string pointer dam fucking sucks!"; printf("%s\n%p\n%c\n", p, p, *p);

你会发现c实际上没有string类型。那么c的%s怎么来的呢?用char数组代替。那么%s如何工作?它会从所给指针指向的位置开始,逐字符的打印输出,直到遇到“/n”或者“/0”。所以%s需要的只是一个指针值。(或者说数组第一个值的内存地址)读取了第一个值后,它会跳到后面的位置继续读取,这建立在你传给它的值是指针的前提上。如果你用了 ,结果只得到了第一个字符而没有指针( 表示取出指针所指位置保存的值),程序不知道后续字符的储存位置,它去哪里找?再说%d,%d只打印一个十进制数值,不需要后续继续打印,所以直接给它这个数值就行了。(*是什么意思不需要我再说一遍了吧?)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式