zoukankan      html  css  js  c++  java
  • C++ 核心编程 引用

    int main 
    引用

     


    引用做函数的参数
    //交换函数
    //1、值传递
    void mySwap01(int a ,int b)
    {
      int temp = a;
      a = b;
      b = temp;
    cout <<"Swap01 a="<<a<<endl;
    cout <<" Swap01 b="<<b<<endl;

    }

    int main(){
      int a =10;
      int b=-20 ;
    mySwap01(a,b);
    cout <<"a="<<a<<endl;
    cout <<"b="<<b<<endl;
    //输出结果
    Swap01 a= 20;
    Swap01 b= 10;

    a = 10;
    b = 20;
    //实参并没有发生改变,但是形参确实改变了


    }

    //2、地址传递
    void mySwap02(int *a ,int *b)
    {
      int temp = *a;
      *a = *b;
      *b = temp;
    }
    int main(){
      int a =10;
      int b=-20 ;
    mySwap02(&a,&b);//地址传递,形参会修饰实参的
    cout <<"a="<<a<<endl;
    cout <<"b="<<b<<endl;

    //输出结果
    a = 20;
    b = 10;
    //实参并没有发生改变,但是形参确实改变了
    }


    //3、引用传递
    void mySwap03(int &a ,int &b)
    {
      int temp = a;
      a = b;
      b = temp;
    }
    int main(){
      int a =10;
      int b=-20 ;
    mySwap03(a,b);//引用传递,形参会修饰实参的
    cout <<"a="<<a<<endl;
    cout <<"b="<<b<<endl;

    //输出结果
    a = 20;
    b = 10;
    //实参并没有发生改变,但是形参确实改变了
    }





    引用做函数的返回值
    1、不要返回局部变量的引用
    int& 特刷题(){
      int a=10;
      return a;
    }

    int main(){
      int &ref = test01;
      cout << "ref=" << ref <<endl;//第一次结果正确,是因为编译器做了保留
      cout << "ref = "<<ref <<erdl;//第二次结果错误,是因为a的内存已经释放
    }

    2、函数的调用可以作为左值
    int& test 02(){
      static int a = 10 ;//静态变量,存放在全局区,全局区上的数据在程序结束后系统释放
      return a;
    }
    int mian(){
      int &ref2= test02();
    cout<<"ref 2=" <<ref2 <<endl;
    test02() = 1000;
    cout<<"ref 2=" <<ref2 <<endl;//此时值为1000;因为如果函数的返回值是引用,这个函数的调用可以作为左值
    }

     

  • 相关阅读:
    HDU 1863 畅通工程(Kruskal)
    HDU 1879 继续畅通工程(Kruskra)
    HDU 1102 Constructing Roads(Kruskal)
    POJ 3150 Cellular Automaton(矩阵快速幂)
    POJ 3070 Fibonacci(矩阵快速幂)
    ZOJ 1648 Circuit Board(计算几何)
    ZOJ 3498 Javabeans
    ZOJ 3490 String Successor(模拟)
    Java实现 LeetCode 749 隔离病毒(DFS嵌套)
    Java实现 LeetCode 749 隔离病毒(DFS嵌套)
  • 原文地址:https://www.cnblogs.com/gjianli/p/15266457.html
Copyright © 2011-2022 走看看