| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 621 人关注过本帖
标题:程序只能看懂一半,另一半请赐教
只看楼主 加入收藏
meishanhuang
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-2-12
结帖率:81.82%
收藏
已结贴  问题点数:10 回复次数:6 
程序只能看懂一半,另一半请赐教
#include<stdio.h>
main( )
{ char a[ ]="1234567",*cp1,*cp2,s;
  cp1=a;cp2=a+6;
  printf("%d\n",*cp2);
  while(cp1<cp2)
{ s=*cp1++;*cp1=*cp2--;*cp2=s;}
  printf("%s",a);}
第一个输出为55,我能理解,而第二个输出为1711717是为什么,我无法理解请赐教,请详细说明。
搜索更多相关主题的帖子: 1234567 
2013-01-02 23:18
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
while(cp1<cp2)
{ s=*cp1++;*cp1=*cp2--;*cp2=s;}
把这里去掉,你再运行看看啊
2013-01-02 23:30
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
就是字符串a啊
2013-01-02 23:32
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
回复 楼主 meishanhuang
程序代码:
while(cp1<cp2)//指针比较,理解成cp1位置在cp2的前面就行了
{
s=*cp1++;//用s记录cp1指向的字符,并使sp1后移
*cp1=*cp2--;//把cp1指向的字符变成cp2指向的字符,并使cp2前移
*cp2=s;//把cp2的指向字符变成s
}


[fly]存在即是合理[/fly]
2013-01-03 00:13
此夜望月
Rank: 2
等 级:论坛游民
帖 子:55
专家分:43
注 册:2012-12-29
收藏
得分:10 
CP2指向‘7’,字符串‘7’的整数值为55,所以你用%d获取*cp2的整数值为55.
因为CP1,CP2都是指向数组的指针,所以可以改变存入数组a中的字符串。我猜测你的问题应该是出在为什么不是  1717717  而是 1711717吧。
也就是说,最关键的问题可能是a[3]的值。
当程序运行到这一步的时候,*cp1=*cp2,将a[3]修改为了7,而此刻循环还未停止,它将继续运行,也就是说,cp2这时候(在*cp1=*cp2的时候)
也指向了a[3],并且cp2=s=1.所以,最后cp2将a[3]从7修改到了1.所以最后的答案是1711717.
其他还有不清楚的请留下问题。
2013-01-03 00:29
猴哥取经
Rank: 2
等 级:论坛游民
帖 子:41
专家分:34
注 册:2012-10-28
收藏
得分:0 
上面正解。
2013-01-03 18:26
weishen2011
Rank: 2
等 级:论坛游民
帖 子:92
专家分:70
注 册:2012-10-16
收藏
得分:0 
路过看看
2013-01-03 18:46
快速回复:程序只能看懂一半,另一半请赐教
数据加载中...
 
   



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

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