• 交换x,y的三种方式


    • 1 值传递:
    #include<iostream>
    using namespace std;
    int main(){
    void change(int ,int);
    int x=2,y=3;
    cout<<"交换前:x="<<x<<" y="<<y<<endl;
    change(x,y);
    cout<<"交换后:x="<<x<<" y="<<y<<endl;
    return 0;
    }
    void change(int x,int y){
    int temp;
    temp=x;
    x=y;y=temp;
            cout<<"函数内:x="<<x<<" y="<<y<<endl;
    }
    

      

        这种方式并不能改变 x,y的值,因为在函数交换后实参的值是没有变的。只是在函数内部改变了x,y的值。
     
    • 指针传递
        
    #include<iostream>
    using namespace std;
    int main(){
    void change(int * ,int *);
    int x=2,y=3;
    cout<<"交换前:x="<<x<<" y="<<y<<endl;
    change(&x,&y);
    cout<<"交换后:x="<<x<<" y="<<y<<endl;
    return 0;
    }
    void change(int *x,int *y){
    int temp;
    temp=*x;
    *x=*y;
    *y=temp;
    }
    

      

    指针传递交换的是实参的地址(传给给形参的是地址),所以最后x,y的值改变了
     
    3引用传递
    #include<iostream>
    using namespace std;
    int main(){
    void change(int & ,int &);
    int x=2,y=3;
            cout<<"实参x的地址是:"<<&x<<endl; 
    cout<<"交换前:x="<<x<<" y="<<y<<endl;
    change(x,y);
    cout<<"交换后:x="<<x<<" y="<<y<<endl;
    return 0;
    }
    void change(int &x,int &y){
    int temp;
    temp=x;
    x=y;
    y=temp;
            cout<<"形参x的地址是:"<<&x<<endl;
    }

    引用 &x,相当于给x去了一个别名,形参x和实参x=2 在内存中地址是相同。
     
     
     
    综上,三种交换方式中间接引用的方式都能交换想x,y的值。
     
  • 相关阅读:
    Django框架基础之序列化
    资产采集
    CMDB
    数据库--三层架构
    Django 项目一补充
    评论楼
    图片预览
    验证码
    如何使用C/C++动态库与静态库中的宏
    Matlab 直线方程、采样函数
  • 原文地址:https://www.cnblogs.com/baixl/p/4082343.html
Copyright © 2020-2023  润新知