| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 746 人关注过本帖
标题:想不明白答案,求解答
只看楼主 加入收藏
spiderman913
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-10
收藏
 问题点数:0 回复次数:12 
想不明白答案,求解答
#include<stdio.h>
int a, b;
void fun()
{ a=10; b=20; }
main()
{ int a=5, b=7;
fun();
printf("%d,%d \n", a,b); }

为什么输出的结果是5,7而不是10,20呢??? 想不明白啊啊求大神们帮帮~
搜索更多相关主题的帖子: fun 
2013-01-06 18:53
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
百度一下 形参


[fly]存在即是合理[/fly]
2013-01-06 19:12
不玩虚的
Rank: 9Rank: 9Rank: 9
来 自:四川
等 级:贵宾
威 望:10
帖 子:331
专家分:1301
注 册:2012-12-9
收藏
得分:0 
楼主想干嘛,传递的三种方式,你想研究下?值传,引用,地址传。表示没有参数,没有返回值,调用的函数和没有没有区别。还有,a,b,即是全局变量又是局部变量,就近原则当然得认局部变量啊。变量的作用域楼主值得学习下。,不要相信我说的看书才是王道。

同学习......同进步....你帮我......我帮你.....上善若水.....
2013-01-06 19:32
XQwindow
Rank: 2
等 级:论坛游民
帖 子:121
专家分:64
注 册:2013-1-1
收藏
得分:0 
你看你的代码,有两个a,两个b,都不报错,就足以说明这四个是不同的变量了,虽然局部变量的名字和全局变量的名字相同,但是他们也不能说是同一个变量的。
你只能用指针了。
程序代码:
#include<stdio.h>
int a, b; 
void fun(int *a,int *b) 
{
   *a=10; *b=20; 
} 
main() 
{ int a=5, b=7; 
fun(&a,&b); 
printf("%d,%d \n", a,b); }

 
这个是代码啦,输出的是10和20

我不知道我能否当程序员,但我依然热爱编程!
2013-01-06 19:55
qingcong33
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:6
帖 子:47
专家分:64
注 册:2012-12-13
收藏
得分:0 
#include <stdio.h>
int m(int x,int y)
{
  x=10;
  y=20;

  return x;
}
int n(int x,int y)
{
  x=10;
  y=20;

  return y;
}
main()
{
  int a=5,b=7;
  printf("a=%d b=%d",m(a,b),n(a,b));


}
这样应该行了!
2013-01-06 20:04
qingcong33
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:6
帖 子:47
专家分:64
注 册:2012-12-13
收藏
得分:0 
如果不用指针。。。
2013-01-06 20:06
杂召流金
Rank: 2
来 自:广西
等 级:论坛游民
帖 子:32
专家分:10
注 册:2012-11-24
收藏
得分:0 
请问求的是什么,这个a,b一开始就变成局部变量了,会不会先输出10,20,;然后再输出5,7,只是后面的把前面的覆盖了
2013-01-06 20:10
qingcong33
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:6
帖 子:47
专家分:64
注 册:2012-12-13
收藏
得分:0 
如果不用指针。。。
2013-01-06 20:16
mutouren123
Rank: 1
等 级:新手上路
帖 子:7
专家分:8
注 册:2012-7-5
收藏
得分:0 
#include<stdio.h>
int a, b; //定义全局变量
void fun()
{ a=10; b=20; } //这里是直接使用
main()
{ int a=5, b=7; //这里重新定义了,闭屏了全集变量
fun();
printf("%d,%d \n", a,b); }

为什么输出的结果是5,7而不是10,20呢??? 想不明白啊啊求大神们帮帮~
2013-01-06 20:19
spiderman913
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-10
收藏
得分:0 
回复 4楼 XQwindow
程序就是这样的,我只是不是很明白为什么最后输出的是5,7  
还有,这程序是如何看的?怎么判断是输出哪组a b??
2013-01-06 20:22
快速回复:想不明白答案,求解答
数据加载中...
 
   



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

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