| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1143 人关注过本帖
标题:全局变量的疑惑
只看楼主 加入收藏
zzw1978524
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2005-11-24
收藏
 问题点数:0 回复次数:17 
全局变量的疑惑
编写一个函数swap用于交换两个整数的值
#include<stdio.h>
int x,y;
void swap(int x,int y)
{
int t;
t=x;
x=y;
y=t;
}
void main()
{
scanf("%d%d",&x,&y);
swap(x,y);
printf("%d %d",x,y);
}
调用swap,同时把主调函数中的x,y传給被调函数中的x,y.互换后由主函数输出.
问什么不行,请指教谢谢!!!
搜索更多相关主题的帖子: 变量 全局 
2005-11-30 13:37
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
#include<stdio.h>
int x,y;
void swap()
{
int t;
t=x;
x=y;
y=t;
}
void main()
{
scanf("%d%d",&x,&y);
swap(x,y);
printf("%d %d",x,y);
}

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-11-30 13:46
落花吹雪
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2005-11-20
收藏
得分:0 
楼上的错了吧 主函数中有实参  而函数中却没有  
2005-11-30 17:17
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
错不错的,你不会运行一下?

唉,都是想当然地说话

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2005-11-30 17:22
strawberry
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2005-11-30
收藏
得分:0 

I have run both the programme. The second one is correct. But I don't know why it is right.
knocker, can you tell me why. Thanks very much.


我知道交流对于软件人是多么的重要! 所以我希望长期待在这里!
2005-11-30 17:57
cranky
Rank: 1
等 级:新手上路
威 望:1
帖 子:89
专家分:0
注 册:2005-11-21
收藏
得分:0 
靠!!!我对你的佩服有如滔滔江水连绵不绝,一发不可收拾!!!!!!!





一个不知道天高地厚,想问什么时候才是满壶水的鬼 --------------半壶水响叮当
2005-11-30 23:38
球球
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:1146
专家分:265
注 册:2005-11-28
收藏
得分:0 
#include<stdio.h>
int x,y,t;
void swap(int x,int y)
{
t=x;
x=y;
y=t;
printf("%d %d",x,y);
}
void main()
{
scanf("%d%d",&x,&y);
swap(x,y);
}

好累
2005-12-01 00:57
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
2楼的void swap()就是把全局变量x,y的值交换了。后面swap()中的参数不需要写.版主你写参数是要忽悠大家?

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2005-12-01 02:49
cherrysindow
Rank: 2
等 级:论坛游民
帖 子:124
专家分:10
注 册:2005-10-21
收藏
得分:0 
以下是引用zzw1978524在2005-11-30 13:37:00的发言:
编写一个函数swap用于交换两个整数的值
#include<stdio.h>
int x,y;
void swap(int x,int y)
{
int t;
t=x;
x=y;
y=t;
}
void main()
{
scanf("%d%d",&x,&y);
swap(x,y);
printf("%d %d",x,y);
}

红色的x,y代表相同的变量--局部变量

绿色的x,y代表相同的变量--全部变量



在c中,全局变量和局部变量可以同名,采用就近原则使用变量

函数的参数传递方式是call by value,就是他们有相同的右值(数值)

而具有不同的左值(地址空间,或者说是存储空间)





在swap()中使用的x,y是局部变量,和全局变量不同的存储空间

swap()中交换的是局部变量的值,而主函数中输出的全局变量的值

当然是不可能是交换后的值





虽然我很普通,但是我很讲道理 如果我的问题冒犯了您 请不要生气 因为我是无意的
2005-12-01 12:08
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
以下是引用feng1256在2005-12-1 2:49:00的发言:
2楼的void swap()就是把全局变量x,y的值交换了。后面swap()中的参数不需要写.版主你写参数是要忽悠大家?

不是,我只是复制楼主的代码,删去了他的子函数的参数。main中的swap()是不需要参数的,我没注意到这问题,所以就没删了,但是,加上了也没事,这个问题初学者无需研究。


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-12-01 12:14
快速回复:全局变量的疑惑
数据加载中...
 
   



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

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