| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 677 人关注过本帖
标题:问题贴,比较菜的
只看楼主 加入收藏
ymszzq
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-8-29
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
问题贴,比较菜的
恩,有个问题,
#include<iostream>
using namespace std;
void swap(int ,int );
int main()
{
    int x=1,y=2;
    cout<<"在main函数前的x,y的值"<<x <<y<<endl;
    swap(x,y);
    cout<<"在main函数后的x,y的值"<<x <<y<<endl;
    return 0;
}
void swap(int x,int y)
{
        cout<<"在swap函数前的x,y的值"<<x <<y<<endl;
    int z;
    z=x;
    x=y;
    y=z;
    cout<<"在swap函数后的x,y的值"<<x <<y<<endl;
}

函数执行完了,怎么可以让函数内变的数,在函数外也使用
搜索更多相关主题的帖子: void 
2010-08-29 09:02
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:3 
void swap( int x, int y)
改成
void swap( int &x, int &y)
就可以了。
2010-08-29 09:26
zxh_85
Rank: 2
等 级:论坛游民
帖 子:8
专家分:11
注 册:2010-8-29
收藏
得分:3 
或者用指针也可以
2010-08-29 10:52
ljt
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:191
专家分:431
注 册:2009-4-6
收藏
得分:3 
楼主这个问题一定要搞清楚,传值和传址
2010-08-30 09:16
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:3 
回复 楼主 ymszzq
这里有一个很值得注意的问题。
其实根本不用你自己写这个函数,因为这个函数在库函数里有。
看看我的这段简化的代码,就可以实现这个功能了。
程序代码:
#include<iostream>
using namespace std;

int main()
{
    int x=1,y=2;
    cout<<"在main函数前的x,y的值"<<x <<y<<endl;

    swap(x,y);

    cout<<"在main函数后的x,y的值"<<x <<y<<endl;
    return 0;
}



[ 本帖最后由 南国利剑 于 2010-8-30 14:06 编辑 ]

南国利剑
2010-08-30 14:05
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
收藏
得分:3 
按引用传递可以直接改变实参的值...而不是实参的副本...
2010-08-31 10:19
holychild
Rank: 2
等 级:论坛游民
帖 子:21
专家分:31
注 册:2010-8-22
收藏
得分:3 
值传递是单向的,在函数里改变的只是实参的副本,而不会传递到main函数里面去。而指针传递和引用传递,传的是参数的地址,这样在main函数里的参数值也会随之改变。
2010-08-31 11:27
l376365333
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-8-2
收藏
得分:0 
#include<iostream>
using namespace std;
void swap(int *,int * );
int main()
{
    int x=1,y=2;
    cout<<"在main函数前的x,y的值"<<x <<y<<endl;
    swap(&x,&y);
    cout<<"在main函数后的x,y的值"<<x <<y<<endl;
    return 0;
}
void swap(int *x,int *y)
{
        cout<<"在swap函数前的x,y的值"<<*x <<*y<<endl;
    int z;
    z=*x;
    *x=*y;
    *y=z;
    cout<<"在swap函数后的x,y的值"<<*x <<*y<<endl;
}
2010-09-12 16:39
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
引用或者指针都可以
void sawp(int &x,int &y)     
{
     int z;
    z=x;
    x=y;
    y=z;

}
void swap(int *x,int *y)
{
        cout<<"在swap函数前的x,y的值"<<*x <<*y<<endl;
    int z;
    z=*x;
    *x=*y;
    *y=z;
    cout<<"在swap函数后的x,y的值"<<*x <<*y<<endl;
}

                                         
===========深入<----------------->浅出============
2010-09-12 19:00
快速回复:问题贴,比较菜的
数据加载中...
 
   



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

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