函数返回值是引用的情况。

桃扇骨 2023-05-30 06:03 72阅读 0赞

(1) 函数返回值为引用时,若返回栈变量,不能成为其它引用的初始值,不能作为左值

(2) 函数返回值为引用时,若返回的是静态变量或者全局变量,可以成为其他引用的初始值,既可以作为左值,也可以作为右值。具体看如下代码:

  1. #include <iostream>
  2. using namespace std;
  3. int getAA1()
  4. {
  5. int a ;
  6. a = 10;
  7. return a;
  8. }
  9. //返回a的本身 返回a的一个副本 10
  10. int& getAA2()
  11. {
  12. int a ; //如果返回栈上的 引用, 有可能会有问题
  13. a = 10;
  14. return a;
  15. }
  16. int* getAA3()
  17. {
  18. int a ;
  19. a = 10;
  20. return &a;
  21. }
  22. void main1101()
  23. {
  24. int a1 = 0;
  25. int a2 = 0;
  26. a1 = getAA1();
  27. a2 = getAA2(); //10
  28. int &a3 = getAA2(); //若返回栈变量 不能成为其它引用的初始值
  29. printf("a1:%d \n", a1); //输出10
  30. printf("a2:%d \n", a2); //输出10
  31. printf("a3:%d \n", a3); // *a3,输出乱码
  32. cout<<"hello..."<<endl;
  33. system("pause");
  34. return ;
  35. }
  36. //变量是static 或者是 全局变量
  37. int j1()
  38. {
  39. static int a = 10;
  40. a ++ ;
  41. return a;
  42. }
  43. int& j2()
  44. {
  45. static int a = 10;
  46. a ++ ;
  47. return a;
  48. }
  49. //若返回静态变量或全局变量
  50. // 可以成为其他引用的初始值
  51. // 即可作为右值使用,也可作为左值使用
  52. void main1112()
  53. {
  54. int a1 = 10;
  55. int a2 = 20;
  56. a1 = j1();
  57. a2 = j2();
  58. int &a3 = j2();
  59. printf("a1:%d \n", a1); //输出10
  60. printf("a2:%d \n", a2); //输出11
  61. printf("a3:%d \n", a3); //输出12
  62. system("pause");
  63. }
  64. //
  65. //--- 函数当左值
  66. //返回变量的值
  67. int g1()
  68. {
  69. static int a = 10;
  70. a ++ ;
  71. return a; //
  72. }
  73. //返回变量本身 ,
  74. int& g2()
  75. {
  76. static int a = 10;
  77. a ++ ;
  78. printf("a:%d \n" , a);
  79. return a;
  80. }
  81. void main()
  82. {
  83. // g1() = 100;
  84. //11 = 100;
  85. g2() = 100; //函数返回值是一个引用,并且当左值 ,对应的函数输出11
  86. g2(); //输出101
  87. int c1 = g1(); //函数返回值是一个引用,并且当右值 ,输出11
  88. int c2 = g2(); //函数返回值是一个引用,并且当右值 ,输出102
  89. //a = 100;
  90. system("pause");
  91. }

发表评论

表情:
评论列表 (有 0 条评论,72人围观)

还没有评论,来说两句吧...

相关阅读

    相关 函数返回引用情况

    (1) 函数返回值为引用时,若返回栈变量,不能成为其它引用的初始值,不能作为左值    (2) 函数返回值为引用时,若返回的是静态变量或者全局变量,可以成为其他引用的初始值

    相关 函数返回几种情况

    在一个函数的内部,return的时候返回的都是一个拷贝,不管是变量、对象还是指针都是返回拷贝,但是这个拷贝是浅拷贝。   1.     如果返回一个基本类型的变量,比如:

    相关 引用作为函数返回

    函数返回值时,要生成一个值的副本。而用引用返回值时,不生成值的副本。   例如,下面的程序是有关引用返回的4种形式:     //\\\\\\\\\\\\\\\\\\\