zoukankan      html  css  js  c++  java
  • 交换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的值。
     
  • 相关阅读:
    MVC、MVP、MVVM架构模式
    JavaScript中的跨域详解(二)
    JavaScript中的跨域详解(一)
    RESTful基础知识
    Date类
    数据的相对比较
    递归应用
    浏览器在一次 HTTP 请求中,需要传输一个 4097 字节的文本数据给服务端,可以采用那些方式?
    【04】图解JSON
    【08】css sprite是什么,有什么优缺点
  • 原文地址:https://www.cnblogs.com/baixl/p/4082343.html
Copyright © 2011-2022 走看看