| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 529 人关注过本帖
标题:一个让人糊涂的问题
只看楼主 加入收藏
hmsabc
Rank: 2
来 自:贵州省兴义市
等 级:论坛游民
帖 子:97
专家分:19
注 册:2010-8-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
一个让人糊涂的问题
程序代码:
#include <iostream>
using namespace std;

int main( )
{
    void sort(int x, int y, int z);                    //声明函数 sort
    int x,y,z;
    cin >> x >> y >> z;
    sort( x,y,z);
    system("pause");
    return 0;
}

void sort(int x,int y,int z)
{
    int temp;
    if( x > y) { temp = x;x = y;y = temp;}
    if( z < x) cout << z << ',' << x << ',' << y << endl;
    else if( z < y) cout << x << ',' << z << ',' << y << endl;
    else cout << x << ',' << y << ',' << z << endl;
}




#include <iostream>
using namespace std;

int main( )
{
    void sort(int a, int b, int c);                    //声明函数 sort
    int a,b,c;
    cin >> a >> b>> c;
    sort( a,b,c);
    system("pause");
    return 0;
}

void sort(int x,int y,int z)
{
    int temp;
    if( x > y) { temp = x;x = y;y = temp;}
    if( z < x) cout << z << ',' << x << ',' << y << endl;
    else if( z < y) cout << x << ',' << z << ',' << y << endl;
    else cout << x << ',' << y << ',' << z << endl;
}

   
    上面两段代码,大家应该看得很清楚,都是经过编译的,结果也一样。上面那一段,给人的感觉好像对 int x,y,z;三个数给予了重复定义,因为在主函数里定义了int x,y,z; 又在定义函数时,在函数参数里也有 int x,y,z; 请问这种情况到底算不算重复定义?我想应该不算,否则通不过编译,但这种写法跟下面的写法相比,究竟都是对的呢,还是存在什么问题?我觉得上面的写法让人犯糊涂,下面的写法要清楚一些。



[ 本帖最后由 hmsabc 于 2010-8-18 22:25 编辑 ]
搜索更多相关主题的帖子: 糊涂 
2010-08-18 22:24
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:7 
void sort(int a, int b, int c);                    //声明函数 sort,a,b,c只在sort函数声明的域中有效,出了这个作用域就无效了。
C++ Primer里面有提到这个。
2010-08-18 22:32
hmsabc
Rank: 2
来 自:贵州省兴义市
等 级:论坛游民
帖 子:97
专家分:19
注 册:2010-8-2
收藏
得分:0 
程序代码:
//算了,我觉得还是用这种写法:

#include <iostream>
using namespace std;

int main( )
{
    void sort(int, int, int);                    //声明函数 sort
    int a,b,c;                                   //定义三个整型变量
    cin >> a >> b>> c;                           //输入三个整数
    sort( a,b,c);                                //调用 sort 函数
    system("pause");
    return 0;
}

void sort(int x,int y,int z)                     //定义 sort 函数
{
    int temp;
    if( x > y) { temp = x;x = y;y = temp;}                         //由小到大排序的算法
    if( z < x) cout << z << ',' << x << ',' << y << endl;
    else if( z < y) cout << x << ',' << z << ',' << y << endl;
    else cout << x << ',' << y << ',' << z << endl;
}


2010-08-18 22:50
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
收藏
得分:7 
不算重定义,他们的作用域不同.不过变量名最好不要样...
2010-08-18 23:33
weble
Rank: 2
等 级:论坛游民
帖 子:59
专家分:83
注 册:2009-4-12
收藏
得分:0 
函数声明,只是引入一个函数名字:void sort(int, int, int)
参数名叫什么无所谓

路漫漫其修远兮,吾将上下而求索
2010-08-18 23:50
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:6 
嗯,虽然作用域不一样,但人看的时候还是容易混。起不一样的名字,或者不给名字相对好一点。
2010-08-19 00:43
快速回复:一个让人糊涂的问题
数据加载中...
 
   



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

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