当前位置:   article > 正文

C++结构体中的值传递、地址传递、引用传递_c++ 结构体引用传递

c++ 结构体引用传递

1、值传递
值传递在形参中改变参数的值不会改变实参中参数的值
2、地址传递
地址传递在形参中改变函数的参数会同时改变实参中的参数值
3、引用传递
引用传递在形参中改变函数的参数会同时改变实参中的参数值

下面代码充分显示了三种传递的区别:

  1. #include <iostream>
  2. #include<string>
  3. using namespace std;
  4. struct Student {
  5.      string name;
  6.      int age;
  7.      int score;
  8. };
  9. void Student1(struct Student s) {
  10.     //值传递
  11.     s.age = 100;
  12.     cout << "值传递后Student1中的值" << endl;
  13.     cout << "姓名:" << s.name << endl;
  14.     cout << "年龄:" << s.age << endl;
  15.     cout << "成绩:" << s.score << endl;
  16.     cout << endl;
  17. }
  18. void Student2(struct Student * p) {
  19.     //地址传递
  20.     p->age = 200;
  21.     cout << "地址传递后Student2的值" << endl;
  22.     cout << "姓名:" << p->name << endl;
  23.     cout << "年龄:" << p->age << endl;
  24.     cout << "成绩:" << p->score << endl;
  25.     cout << endl;
  26. }
  27. void Student3(struct Student &s) {
  28.     //引用传递
  29.     s.age = 100;
  30.     cout << "值传递后Student1中的值" << endl;
  31.     cout << "姓名:" << s.name << endl;
  32.     cout << "年龄:" << s.age << endl;
  33.     cout << "成绩:" << s.score << endl;
  34.     cout << endl;
  35. }
  36. int main()
  37. {    
  38.     struct Student s;
  39.     s.name = "张三";
  40.     s.age = 16;
  41.     s.score = 99;
  42.     cout << "main函数中的值" << endl;
  43.     cout << "姓名:" << s.name << endl;
  44.     cout << "年龄:" << s.age << endl;
  45.     cout << "成绩:" << s.score << endl;
  46.     cout << endl;
  47.     Student1(s);//对s进行值传递
  48.     cout << "值传递后main函数中的值" << endl;
  49.     cout << "姓名:" << s.name << endl;
  50.     cout << "年龄:" << s.age << endl;
  51.     cout << "成绩:" << s.score << endl;
  52.     cout << endl;
  53.     Student2(&s);//对s进行地址传递,需要加上取地址符
  54.     cout << "地址传递后main函数中的值" << endl;
  55.     cout << "姓名:" << s.name << endl;
  56.     cout << "年龄:" << s.age << endl;
  57.     cout << "成绩:" << s.score << endl;
  58.     cout << endl;
  59.     Student3(s);//对s进行引用传递
  60.     cout << "引用传递后main函数中的值" << endl;
  61.     cout << "姓名:" << s.name << endl;
  62.     cout << "年龄:" << s.age << endl;
  63.     cout << "成绩:" << s.score << endl;
  64.     cout << endl;
  65.     return 0;
  66. }

结果显示:

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

闽ICP备14008679号