| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1221 人关注过本帖
标题:问一个非常迷茫的问题。。。
只看楼主 加入收藏
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:1 
函数形参一定是个临时变量,其作用域是整个函数体。 如果有一个同名的 全局变量,
那么 函数的形参会覆盖全局变量。

如果 变量已经是全局的了,还通过参数传来传去,有意义吗?


[ 本帖最后由 BlueGuy 于 2010-6-11 12:47 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-06-11 12:41
笨到家啦
Rank: 2
等 级:论坛游民
帖 子:19
专家分:73
注 册:2010-6-7
收藏
得分:0 
以下是引用huxiangwenhu在2010-6-9 21:37:50的发言:

各位大侠,小弟我可能是吃多了没事干,想请教一个非常没意思的问题
值传递不能改变主调函数中的变量,只能改变局部变量,若我不用指针,而又必须用函数调用,是不是就不可能实现两数值互换了?大侠们如有方法,请示下,请大家注意:1,不能用指针;2必须用函数调用
#include
int swap(int x,int y)
{
    int temp;
    temp=x;
    x=y;
    y=temp;
}
main()
{
    int a,b,s;
    printf("输入两个数:\n");
    scanf("%d,%d",&a,&b);
    s=swap(a,b);
    printf("输出两个数:\n");
    printf("%d,%d\n",a,b);   
}
我想函数swap只是把主函数给的两个参数互换了,它并不能改变主函数的两个变量吧
2010-06-11 12:48
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:1 
回复 楼主 huxiangwenhu
看看这个代码的运行结果是否符合你的要求。
呵呵。。。我用的是vc6.0
程序代码:
#include<iostream>
using namespace std;

int main()
{
    int i=3,j=4;
    swap(i,j);
    cout<<i<<endl<<j<<endl;
    return 0;
}

 

南国利剑
2010-06-11 12:56
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 13楼 南国利剑
函数体呢?

我就是真命天子,顺我者生,逆我者死!
2010-06-11 12:58
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
其实这个代码只是投机取巧。
看出来了吧。

南国利剑
2010-06-11 13:02
NOMIPS
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:86
专家分:537
注 册:2010-3-31
收藏
得分:0 
回复 9楼 10楼
To 9楼:
全局变量 顾名思义 任何一个函数都能访问的变量,通常用于函数与函数之间,模块与模块间数据交换。
sorry,其实之前贴的程序swap函数调用的时候不应该加参数,修改时忘记删了,直接写swap();就好。
To 10楼:
/*
    x=x^y;
    y=x^y;
    x=x^y;   
*/ 是多行注释号 这里面的内容不起作用,但如果单单使用这里面的代码也能实现两数值交换。
2010-06-11 13:32
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:0 
回复 12楼 笨到家啦
这个相当与x=a;y=b;然后x,y无论如何改变对a,b都是没有任何改变的,
而全局变量,无论你是在主函数中使用还是在子函数中使用,都在使用一个变量,没什么区别
2010-06-11 14:45
huxiangwenhu
Rank: 4
等 级:业余侠客
威 望:1
帖 子:191
专家分:262
注 册:2010-6-1
收藏
得分:0 
回复 13楼 南国利剑
涉及到C++了,虽然能解决,但是兄弟你可能没完全看懂我的要求,还是谢谢你,呵呵
2010-06-11 21:38
huxiangwenhu
Rank: 4
等 级:业余侠客
威 望:1
帖 子:191
专家分:262
注 册:2010-6-1
收藏
得分:0 
本题多谢大家的帮助,参考大家的意见最终献给一个参考答案:
#include<stdio.h>
int a,b;
void swap()
{
   
    int temp;
    temp=a;
    a=b;
    b=temp;
}
void main()
{
    printf("输入两个数:\n");
    scanf("%d,%d",&a,&b);
    swap();
    printf("输出两个数:\n");
    printf("%d,%d\n",a,b);   
}
2010-06-11 21:43
快速回复:问一个非常迷茫的问题。。。
数据加载中...
 
   



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

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