当前位置:首页 > IT技术 > 编程语言 > 正文

C++中引用在函数中的使用
2021-12-13 17:57:36

引用做函数参数

  • 作用:做函数参数时,可以利用引用让形式参数修饰实参

  • 优点:可以简化指针修改实参

  • 代码示例:

    //值传递传递
    void swap01(int a, int b)
    {
    int temp;
    temp = a;
    a = b;
    b = temp;
    }

    //地址传递
    void swap02(int* a, int* b)
    {
    int temp = *a;
    *a = *b;
    *b = temp;
    }

    //引用做函数参数;
    void swap03(int &a,int &b)
    {
    int temp;
    temp = a;
    a = b;
    b = temp;
    }

    int main()
    {
    int a = 10;
    int b = 20;
    int& c = a;

    //swap01(a,b); 值传递,形参不会修饰实参

    //swap02(&a, &b); 地址传递,形参可以修饰实参

    swap03(a, b);//引用做函数参数,形参会修饰实参
    cout << "swap02 a= " << a << endl;
    cout << "swap02 b= " << b << endl;
    system("pause");

    }


引用做函数返回值

  • 注意:不要返回局部变量引用

  • 用法:函数调用作为左值

  • 代码示例:

    • //不能返回局部变量  局部变量由系统管理释放
      //引用做函数返回值,函数调用作左值
      int& test01()
      {
      int a = 10; //局部变量存放在栈区
      return a;
      }

      int& test02()
      {
      static int a = 10; //static 静态变量存放在四区中的 全局区
      return a;
      }

      int main()
      {
      //int &a = test01();
      //cout << "a= " << a << endl;//第一次输出 系统做保留
      //cout << "a= " << a << endl;//第二次输出错误 因为系统将内存释放

      int& ref = test02();
      cout << "test02 ref=" << ref << endl; //ref = 10
      cout << "test02 ref=" << ref << endl;

      test02() = 100;

      cout << "test02 ref=" << ref << endl; //ref = 100
      cout << "test02 ref=" << ref << endl;

      system("pause");
      return 0;
      }


引用的注意事项

  • 引用必须初始化 (不能取无效地址)
  • 引用在初始化后,不可以改变。(一个别名不可以在作为其他的别名)

总结参考自​​https://www.bilibili.com/video/BV1et411b73Z?p=90​

本文摘自 :https://blog.51cto.com/u

开通会员,享受整站包年服务立即开通 >