| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1222 人关注过本帖
标题:[求助]以下程序的输出结果是a=___,b=___,c=___。
只看楼主 加入收藏
lijoel73209
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-3-23
收藏
得分:0 
然后执行b=func(c,&a); a=9,c=6,b=16,
这一步的a=9,c=6,b=16是怎么得来的?
我怎么是c=6,a=4(因为a=*p=2+2),b=8 ?
2006-03-23 16:09
fairy1331
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-3-15
收藏
得分:0 

#include <stdio.h>
int func(int a,int *p);

void main()
{
int a=1,b=2,c;

c=func(a,&b); printf("a=%d,b=%d,c=%d\n",a,b,c);
b=func(c,&a);printf("a=%d,b=%d,c=%d\n",a,b,c);
a=func(b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);


}

int func(int a,int *p)
{
a++;
*p=a+2;
return(*p+a);
}
为什么我这样加了红色的语句
运行结果却是:
a=6,b=1,c=4
a=16,b=9,c=16
a=36,b=16,c=19
请高手指点!


http://develop./ IT同盟必看!
2006-03-23 16:40
阿秀
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-3-20
收藏
得分:0 

因为第一步执行完了后a=2;b=4;c=6;
然后调用b=func(c,&a);时具体如下:
c++==7;
*p=c+2-->*p=9;-->a=9;(*p==*&a==a=9;)
*p+c==16;
友情提示:自己多想想 自己想出来的,理解得最深,记得也最牢!


2006-03-23 17:18
fairy1331
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-3-15
收藏
得分:0 
[QUOTE]阿秀

因为第一步执行完了后a=2;b=4;c=6;
然后调用b=func(c,&a);时具体如下:
c++==7;
*p=c+2-->*p=9;-->a=9;(*p==*&a==a=9;)
*p+c==16;
友情提示:自己多想想 自己想出来的,理解得最深,记得也最牢!

[/QUOTE]
但是第一步运行完了的显示是a=6,b=1,c=4
这个结果简直就是不可理喻  

http://develop./ IT同盟必看!
2006-03-23 17:38
haishanglang
Rank: 1
等 级:新手上路
帖 子:378
专家分:0
注 册:2006-3-2
收藏
得分:0 
答案当然是 36 16 19 啦
先执行 c=func(a,&b); 结果为 a=2,b=4,c=6,注意b有个回带过程(&b) ,就是把 *p的值4回带赋给b
后面类似的 b=func(c,&a); 的结果为 a=9,b=16,c=6
a=func(b,&c); 的结果为 a=36,b=16bc=19

2006-03-23 19:19
fairy1331
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-3-15
收藏
得分:0 

终于明白了。原来是那个tc不行,我下了一个C-FREE,正确结果应该是

a=1,b=4,c=6
a=9,b=16,c=6
a=36,b=16,c=19
我说我怎么想不明白了呢


http://develop./ IT同盟必看!
2006-03-24 14:35
快速回复:[求助]以下程序的输出结果是a=___,b=___,c=___。
数据加载中...
 
   



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

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