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;因为如果函数的返回值是引用,这个函数的调用可以作为左值
    }

     

  • 相关阅读:
    Gin框架介绍与使用
    Go并发编程(goroutine)
    Go语言操作数据库及其常规操作
    Julia语言程序基础
    GoLang字符串处理
    在PHP7以上版本使用不了mysql扩展
    Docker基础命令
    Odoo14_Tree视图自定义按钮和自定义面板
    Odoo13_自定义客户端页面
    python_读取.xlsx(电子表格)文件
  • 原文地址:https://www.cnblogs.com/gjianli/p/15266457.html
Copyright © 2011-2022 走看看