| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 352 人关注过本帖
标题:结果为10,怎么得来的?我糊涂了
只看楼主 加入收藏
粉jj
Rank: 2
等 级:论坛游民
威 望:1
帖 子:123
专家分:82
注 册:2011-3-8
结帖率:85.11%
收藏
已结贴  问题点数:5 回复次数:6 
结果为10,怎么得来的?我糊涂了
void main(void)
         {char *s, *s1 = "here is", *s2 = "key";
s = s1; while (*s1!='\0') s1++;
while (*s1++=*s2++);s2 = s;
while(*s2!='\0')s2++;  printf("%d\n",s2-s);



           getch();}
搜索更多相关主题的帖子: void 
2011-04-21 17:56
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:1 
指针相减,不明白!

   唯实惟新 至诚致志
2011-04-21 19:01
mm1010220cs
Rank: 2
等 级:论坛游民
帖 子:36
专家分:98
注 册:2011-4-7
收藏
得分:1 
void main(void)
         {char *s, *s1 = "here is", *s2 = "key";
s = s1; while (*s1!='\0') s1++;        
//s指向字符‘h’
while (*s1++=*s2++);s2 = s;   
//从"here is"这个字符串的末尾开始增加"key",内存中就在连续位置存放了"here iskey"
    同时s2被复制s存放的地址,这样s2就指向了"h"
while(*s2!='\0')s2++;  printf("%d\n",s2-s);
//因为s2是字符指针,循环到'\0'增加10("here iskey"含10个字符),所以s2-s=10;
2011-04-21 19:15
xjzxylj
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:113
注 册:2011-4-18
收藏
得分:1 
楼主这语句写的,小弟只能拜服,看这都不知道执行到哪去了,你的定义是字符串指针吧,很神奇的能输出数值来?

淫一手湿,简单;难的是,淫一被子湿。(富有诗意,此处抄袭)
2011-04-21 19:15
xjzxylj
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:113
注 册:2011-4-18
收藏
得分:0 
以下是引用mm1010220cs在2011-4-21 19:15:04的发言:

void main(void)
         {char *s, *s1 = "here is", *s2 = "key";
s = s1; while (*s1!='\0') s1++;        
//s指向字符‘h’
while (*s1++=*s2++);s2 = s;   
//从"here is"这个字符串的末尾开始增加"key",内存中就在连续位置存放了"here iskey"
    同时s2被复制s存放的地址,这样s2就指向了"h"
while(*s2!='\0')s2++;  printf("%d\n",s2-s);
//因为s2是字符指针,循环到'\0'增加10("here iskey"含10个字符),所以s2-s=10;
void main(void)
         {char *s, *s1 = "here is", *s2 = "key";
s = s1; while (*s1!='\0') s1++;        
//s指向字符‘h’这里的字符串定义的地址末尾应该在h字母前吧?
while (*s1++=*s2++);s2 = s;   
//从"here is"这个字符串的末尾开始增加"key",内存中就在连续位置存放了"here iskey" S2字符串连接后应该是
    同时s2被复制s存放的地址,这样s2就指向了"h"                                    "keyhere is"的吧?
while(*s2!='\0')s2++;  printf("%d\n",s2-s);
//因为s2是字符指针,循环到'\0'增加10("here iskey"含10个字符),所以s2-s=10;
大哥,我这两问题对么?

淫一手湿,简单;难的是,淫一被子湿。(富有诗意,此处抄袭)
2011-04-21 19:22
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:1 
楼主用的什么编译器?难道是 TC ?
其实这个程序就是把 "here is" 和 "key" 连接到一起,然后输出连接后字符串的长度。
"here iskey", 楼主自己数数有多长。

其实指针就是个整数,只不过用来表示一个地址罢了。指针当成 int 来用也是没有任何问题滴

[ 本帖最后由 voidx 于 2011-4-21 19:55 编辑 ]
2011-04-21 19:51
mm1010220cs
Rank: 2
等 级:论坛游民
帖 子:36
专家分:98
注 册:2011-4-7
收藏
得分:0 
回复 5楼 xjzxylj
您这俩问题都错了,原因嘛找人问问

2011-04-22 08:34
快速回复:结果为10,怎么得来的?我糊涂了
数据加载中...
 
   



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

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