| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 614 人关注过本帖
标题:问一下这个三行小程序怎么理解。。。
只看楼主 加入收藏
yenga
Rank: 1
等 级:新手上路
帖 子:39
专家分:7
注 册:2013-11-25
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:8 
问一下这个三行小程序怎么理解。。。
#include"stdio.h"
main()
{
char *p="abcd";
while (*p)
putchar(*p++);
}

输出的是abcd
求解释,,通俗易懂点=-=
搜索更多相关主题的帖子: include 
2013-12-11 19:08
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:4 
回复 楼主 yenga
具体点,
你不会char *p = "abcd";这句也不理解吧。
2013-12-11 19:28
yenga
Rank: 1
等 级:新手上路
帖 子:39
专家分:7
注 册:2013-11-25
收藏
得分:0 
回复 2楼 pangshch
这句会啊,下面不太懂,while里面直接写*p是什么意思
然后output*p++为什么从a开始输出
2013-12-11 19:37
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:4 
这是字符指针
while(*p) 指的是如果 p 指向的内容不为空,就执行while里面的语句

因为 *p++; 会使指针位置产生偏移,刚开始p 是指向第一个元素 a 的,以后每执行一次输出,指针就会向后偏移一位直到为空

三十年河东,三十年河西,莫欺少年穷!
2013-12-11 20:17
plingfeng
Rank: 2
等 级:论坛游民
帖 子:2
专家分:11
注 册:2011-11-6
收藏
得分:4 
楼上正解。
2013-12-11 21:14
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:0 
回复 3楼 yenga
程序代码:
// 第一句懂那就好了。
while (*p)  // 第一次执行的时候就等于 while('a'), 'a' = 48, 所以while 语句为真,执行循环语句
 putchar(*p++);    // 等价于{putchar(*p); p++;}两句。 先输出p指向的值‘a', 然后p指向下一个位置'b', 循环。
循环4次后,最后一次p指向d后面一个。字符串末尾是'\0'字符。
while (*p) 等价于 while ('\0'), '\0' = 0, while 语句为假, 结束循环。
2013-12-11 21:38
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:4 
*p = \0 的时候跳出循环

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2013-12-12 09:38
冬2509102
Rank: 2
等 级:论坛游民
帖 子:32
专家分:33
注 册:2013-9-14
收藏
得分:4 
“abcd"是字符串,*p指针,由于*的优先级高于=.*P="abcd"其实就是将字符串的说地址无给指针。
2013-12-13 22:19
冬2509102
Rank: 2
等 级:论坛游民
帖 子:32
专家分:33
注 册:2013-9-14
收藏
得分:0 
“abcd"是字符串,*p指针,由于*的优先级高于=.*P="abcd"其实就是将字符串的说地址无给指针。
2013-12-13 22:19
快速回复:问一下这个三行小程序怎么理解。。。
数据加载中...
 
   



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

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