當(dāng)前位置:首頁(yè) > IT技術(shù) > 編程語(yǔ)言 > 正文

C++中引用在函數(shù)中的使用
2021-12-13 17:57:36

引用做函數(shù)參數(shù)

  • 作用:做函數(shù)參數(shù)時(shí),可以利用引用讓形式參數(shù)修飾實(shí)參

  • 優(yōu)點(diǎn):可以簡(jiǎn)化指針修改實(shí)參

  • 代碼示例:

    //值傳遞傳遞
    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;
    }

    //引用做函數(shù)參數(shù);
    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); 值傳遞,形參不會(huì)修飾實(shí)參

    //swap02(&a, &b); 地址傳遞,形參可以修飾實(shí)參

    swap03(a, b);//引用做函數(shù)參數(shù),形參會(huì)修飾實(shí)參
    cout << "swap02 a= " << a << endl;
    cout << "swap02 b= " << b << endl;
    system("pause");

    }


引用做函數(shù)返回值

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

  • 用法:函數(shù)調(diào)用作為左值

  • 代碼示例:

    • //不能返回局部變量  局部變量由系統(tǒng)管理釋放
      //引用做函數(shù)返回值,函數(shù)調(diào)用作左值
      int& test01()
      {
      int a = 10; //局部變量存放在棧區(qū)
      return a;
      }

      int& test02()
      {
      static int a = 10; //static 靜態(tài)變量存放在四區(qū)中的 全局區(qū)
      return a;
      }

      int main()
      {
      //int &a = test01();
      //cout << "a= " << a << endl;//第一次輸出 系統(tǒng)做保留
      //cout << "a= " << a << endl;//第二次輸出錯(cuò)誤 因?yàn)橄到y(tǒng)將內(nèi)存釋放

      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;
      }


引用的注意事項(xiàng)

  • 引用必須初始化 (不能取無(wú)效地址)
  • 引用在初始化后,不可以改變。(一個(gè)別名不可以在作為其他的別名)

總結(jié)參考自??https://www.bilibili.com/video/BV1et411b73Z?p=90??

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

開通會(huì)員,享受整站包年服務(wù)立即開通 >