当前位置:   article > 正文

C++(引用)

C++(引用)

引用的基本使用 

作用:给变量其别名

语法:数据类型 &别名 = 原名

  1. #include<iostream>
  2. using namespace std;
  3. int main() {
  4. int a = 10;
  5. int& b = a;
  6. cout << "a=" << a << endl;
  7. cout << "b=" << b << endl;
  8. b = 100;
  9. cout << "a=" << a << endl;
  10. cout << "b=" << b << endl;
  11. }
  1. a=10
  2. b=10
  3. a=100
  4. b=100

引用的注意事项

引用必须初始化

引用在初始化不可以改变

int a = 10;

int &b = a;

引用做函数参数

作用:函数传参时,可以利用引用的技术让形参修饰实参

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

  1. #include<iostream>
  2. using namespace std;
  3. //1.值传递
  4. void swap01(int a, int b) {
  5. int temp = a;
  6. a = b;
  7. b = temp;
  8. }
  9. //2.地址传递
  10. void swap02(int* a, int* b) {
  11. int temp = *a;
  12. *a = *b;
  13. *b = temp;
  14. }
  15. //3.引用传递
  16. void swap03(int& a, int& b) {
  17. int temp = a;
  18. a = b;
  19. b = temp;
  20. }
  21. int main() {
  22. int a = 10;
  23. int b = 20;
  24. swap01(a, b); //值传递时,形参不会修饰实参
  25. cout << " swap01 a = " << a << endl;
  26. cout << " swap01 b = " << b << endl;
  27. swap02(&a,&b); //地址传递时,形参会修饰实参
  28. cout << " swap02 a = " << a << endl;
  29. cout << " swap02 b = " << b << endl;
  30. swap03(a,b); //引用传递时,形参会修饰实参
  31. cout << " swap03 a = " << a << endl;
  32. cout << " swap03 b = " << b << endl;
  33. }

引用做函数返回值

1.不要返回局部变量的引用

2.如果函数的返回值是一个引用,那么函数的调用可以作为左值

  1. #include<iostream>
  2. using namespace std;
  3. int& test01() {
  4. int a = 10; //局部变量存放在栈区
  5. return a;
  6. }
  7. // 返回静态变量引用
  8. int& test02() {
  9. //静态变量存放在全局区,全局区上的数据在程序结束后由系统释放
  10. static int a = 10; //使用static增加程序的生命周期
  11. return a;
  12. }
  13. int main() {
  14. //不能返回局部变量的引用
  15. int& ref1 = test01();
  16. cout << "ref1 = " << ref1 << endl; //结果错误,因为a的内存已经被释放
  17. //如果函数做左值,那么必须返回引用
  18. int& ref2 = test02();
  19. cout << "ref2 = " << ref2 << endl;
  20. cout << "ref2 = " << ref2 << endl;
  21. test02() = 1000;
  22. cout << "ref2 = " << ref2 << endl;
  23. cout << "ref2 = " << ref2 << endl;
  24. }
  1. ref1 = -858993460
  2. ref2 = 10
  3. ref2 = 10
  4. ref2 = 1000
  5. ref2 = 1000

引用的本质

本质是在C++内部实现一个指针常量

C++更推荐使用引用,因为语法方便

  1. int a = 10;
  2. int &b = a;

上面定义的引用等价于下面定义的指针常量,指向不可以修改,但是值可以修改

  1. int a = 10;
  2. int * const b = &a;

常量引用

作用:常量引用主要用来修饰形参,防止误操作

在函数形参列表中,可以加const修饰形参,防止形参改变实参

const int &ref = 10;

上面的代码等价于下面的代码

  1. int temp = 10;
  2. const int &ref = temp;
  1. #include<iostream>
  2. using namespace std;
  3. void print(const int& val) { //增加const后,可以防止误修改a的值
  4. // int val = 1; 此时val的值是不可以修改的
  5. cout << " val = " << val << endl;
  6. }
  7. int main() {
  8. int a = 1000;
  9. print(a);
  10. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/553867
推荐阅读
相关标签
  

闽ICP备14008679号