C语言中printf这个函数的代码实现从哪里可以看到,这个函数是如何实现的

chars[10]="abc";char*p=s;printf("%s\n",p);//这里改成*p就报错难道说printf是先找到地址,然后再把地址中对于的值给打印出来... char s[10]="abc";
char *p=s;
printf("%s\n",p);//这里改成*p就报错
难道说printf是先找到地址,然后再把地址中对于的值给打印出来?
如果是这样的话下面的这个应该写p才对,但下面的这个为什么又是*p了呢
int a=10;
int *p=&a;
printf("%d\n",*p);
展开
 我来答
百度网友874dd59
2015-09-09 · 超过11用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:18.6万
展开全部
glibc里面可以看到实现,哪空针对这个问题:
printf("%s\n",p); %s这个需要是的一个指针参数,就是从P地址开始打印字符,直颂缓哪到野码'\0'
%d 需要的一个int的值,printf会直接把*p值打印出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2015-09-09 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6384万
展开全部
p为指针变量, *p表示该地址中的数据
char s[10]="abc";
char *p=s; //这里p是字符指针,*p表示一个备源字符,p是字符串的首地址
printf("%s\n",p); //%s表示输出一正滚侍个字符串,从给定的地址p开始,直到遇到\0结束输出
printf("%c\n", *p ); //如果输出一个字符,则要用%c,这时的参数要用*p
格式参举吵数不同,后面的变量使用方法是不同的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zjnny
2015-09-09 · TA获得超过2037个赞
知道小有建树答主
回答量:1055
采纳率:100%
帮助的人:1060万
展开全部

printf格式化char*,int,float等的格式是固定的第一个p是char*,第二肢销个*p对应int

字符串传地址,整型直接传值皮饥棚就可以

第一个可以改成输出单个燃则字符

char  s[10]="abc";
char  *p=s;
printf("%c\n",*p);
printf("%c\n",*(p+1));
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式