评论

收藏

[C++] C++中引用在函数中的使用

编程语言 编程语言 发布于:2021-12-13 17:57 | 阅读数:284 | 评论:0

引用做函数参数
  • 作用:做函数参数时,可以利用引用让形式参数修饰实参
  • 优点:可以简化指针修改实参
  • 代码示例:
//值传递传递
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​​



关注下面的标签,发现更多相似文章