回 帖 发 新 帖 刷新版面

主题:关于函数的一个问题

#include<iostream>
void get(int a,int b);
int main()
{
    using namespace std;
           int a,b;
    a=5;
    b=15;
    cout<<"交换前:\n";
    cout<<"a=:"<<a<<endl;
    cout<<"b=:"<<b<<endl;
    get(a,b);
    cout<<"交换后:\n";
    cout<<"a=:"<<a<<endl;
    cout<<"b=:"<<b<<endl;
    return 0;
}


void get(int a,int b)
{
    int c;
    c=a;
    a=b;
    b=c;
}
为什么运行后,交换前后结果一样?[em18]

回复列表 (共2个回复)

沙发

void get(int a,int b) //楼主在这里传递的是值,而不是地址,在这种情况下函数掉调用时会针对实
                      //参a,b生成对应的临时变量,因此在get函数中交换的是临时变量的值而不是
                      //实参int a,b的值。
{
    int c;
    c=a;
    a=b;
    b=c;
}
可以改为传递引用(int& a,int& b) 或者指针(int* a,int* b)。这样就不会生成临时变量而直接交换实参a,b。

板凳

修改后无法通过编译,可否贴一份源码给我?感谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册