| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1146 人关注过本帖
标题:printf函数中输出列表的相关问题
只看楼主 加入收藏
ltfkdc
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:11
专家分:8
注 册:2010-7-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
printf函数中输出列表的相关问题
在程序   char str[]="abcdefg",*p=str;
         int i;
         printf("%c\n",*p);
中,我知道printf函数中的*p作为字符数组STR的地址(即字母a的地址),输出的结果是STR首元素a。
若将printf函数中的%c改为%s,程序会出错,只能是改为
    char str[]="abcdefg",*p=str;
    int i;
    printf("%s\n",p);
其输出的结果是abcdefg
我想知道此时printf函数中的p是作为数组STR的地址还是其他的什么?如果P是STR的地址,那又是为什么
还有就是printf函数中的输出列表是不是写你想要输出的对象的地址?
关于这方面的有没有什么比较有权威的文章呢,求教。。。。
搜索更多相关主题的帖子: printf 函数 列表 输出 
2010-08-16 01:22
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:5 
p就是str的地址,p的大小只是一个char 的大小,他存放str这一连续空间的首地址,*p==a,不是地址,printf会去解析*p,结果相当与   printf("%c\n",*p)= printf("%c\n",a);
                                printf("%s\n",p)= printf("%c\n","abcdefg");
 是不是写输出对象的地址,要看你前面要求的输出什么,一般%s是要地址的,
你可以找找printf函数代码
2010-08-16 13:23
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
回复 楼主 ltfkdc
有了    char str[]="abcdefg",*p=str;
p与str可以认为是等价的!

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-19 18:57
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:15 
以下是引用ltfkdc在2010-8-16 01:22:15的发言:

在程序   char str[]="abcdefg",*p=str;
         int i;
         printf("%c\n",*p);
中,我知道printf函数中的*p作为字符数组STR的地址(即字母a的地址),输出的结果是STR首元素a。
若将printf函数中的%c改为%s,程序会出错,只能是改为
    char str[]="abcdefg",*p=str;
    int i;
    printf("%s\n",p);
其输出的结果是abcdefg
我想知道此时printf函数中的p是作为数组STR的地址还是其他的什么?如果P是STR的地址,那又是为什么
还有就是printf函数中的输出列表是不是写你想要输出的对象的地址?
关于这方面的有没有什么比较有权威的文章呢,求教。。。。
其实你定义指针变量p的时候就应该明白了,p是一个指针,里面存放的就是地址。
根据这点你想想printf("%s\n",p)里的p应该是什么呢,而printf("%c\n",*p),这时是用*引用该地址里存放的值。
printf的输出列表是要输出的对象吧。
可以去看看K&R的书了关于printf的那一章内容。
2010-08-19 22:48
不归鹄
Rank: 9Rank: 9Rank: 9
来 自:冥王星
等 级:蜘蛛侠
威 望:4
帖 子:491
专家分:1380
注 册:2009-12-20
收藏
得分:0 
本来想再次拖着酱油瓶走过,不过还是再说一次:所有的数组名都是指针常量

2010-08-20 07:39
快速回复:printf函数中输出列表的相关问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017070 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved