| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 728 人关注过本帖
标题:[求助]大家能不能帮我分析下这个小程序,谢谢了
只看楼主 加入收藏
小申子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-10-5
收藏
 问题点数:0 回复次数:3 
[求助]大家能不能帮我分析下这个小程序,谢谢了

#include <stdio.h> char *cat(char *str1,char *str2) { char *pt; for(pt=str1;*pt!='\0';pt++) while(*str2!='\0') *pt++=*str2++; *pt='\0'; return(pt); } main() { char *p; char s1[30]="210",s2[30]="45"; p=cat(s1,s2); printf("%d\n",p-s1); }

答案为3,说是两个字符串的连接。

在cat函数中,我觉得好像是先把str1的首地址给pt,再把str2的字符组逐个赋给pt,等于把str1的覆盖掉了,pt就是str2

大家能不能帮我解释下,谢谢了!

搜索更多相关主题的帖子: include return 字符串 
2004-11-06 00:16
你好C语言
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2004-11-5
收藏
得分:0 
看不懂。我不是菜,是很菜,不好意思[em43]
2004-11-07 04:51
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 
……#include &lt;stdio.h&gt;
char *cat(char *str1,char *str2)
{
char *pt;
for(pt=str1;*pt!='\0';pt++){;}———这个地方的问题
while(*str2!='\0') *pt++=*str2++;
*pt='\0';
return(pt);
}
main()
{
char *p;
char s1[30]="210",s2[30]="45";
p=cat(s1,s2);
printf("%d\n",p-s1);
}

我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2004-11-07 07:50
心若在
Rank: 1
等 级:新手上路
帖 子:82
专家分:0
注 册:2004-9-21
收藏
得分:0 

#include <stdio.h> char *cat(char *str1,char *str2) { char *pt; for(pt=str1;*pt!='\0';pt++) while(*str2!='\0') *pt++=*str2++; *pt='\0'; 这里对pt地址所指的进行了赋值 return(pt); 因此返回的也就是指向'\0'的地址变量; } main() { char *p; char s1[30]="210",s2[30]="45"; p=cat(s1,s2); 于是这里p也就是指向'\0'的地址变量; printf("%d\n",p-s1); p 和s1 不是指向同一数组的地址变量,此运算是无意义的,因此得到的结果也无意义 }

楼主还要好好的琢磨地址变量地址变量指向的变量值两个不同的概念

[此贴子已经被作者于2004-11-09 22:48:55编辑过]


我知道我菜 但我会尽我最大的努力去帮助别人!
2004-11-09 22:44
快速回复:[求助]大家能不能帮我分析下这个小程序,谢谢了
数据加载中...
 
   



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

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