当前位置:   article > 正文

C++中值传递、引用传递和地址传递的区别_c++值传递地址传递和引用传递的区别

c++值传递地址传递和引用传递的区别
  1. 值传递(Pass by Value):

    • 在值传递中,将实参的值复制一份传递给函数的形参。
    • 函数内部对形参的修改不会影响到实参的值。
    • 在函数内部对形参进行的任何操作都只是对副本的操作,不会影响原始数据。
    • 适用于简单的数据类型,如整数、浮点数等。
    • 值传递的优点是简单、安全,参数之间相互独立,不会互相影响。
  2. 引用传递(Pass by Reference):

    • 在引用传递中,将实参的内存地址传递给函数的形参。
    • 函数内部对形参的修改会影响到实参的值,因为它们指向同一个内存地址。
    • 引用传递适用于需要修改实参的值或者需要传递大型数据结构的情况,例如数组、对象等。
    • 引用传递的优点是可以节省内存空间和传递数据的时间,能够直接操作原始数据。
  3. 地址传递(Pass by Address):

    • 在地址传递中,将实参的指针(内存地址)传递给函数的形参。
    • 函数内部可以通过解引用操作来修改实参的值。
    • 地址传递与引用传递类似,但需要手动进行解引用操作,不太直观,容易出错,通常不建议使用。                                                                                                                                                                                                                                                              值传递示例:
      1. #include <iostream>
      2. void changeValue(int x) {
      3. x = 10;
      4. }
      5. int main() {
      6. int num = 5;
      7. changeValue(num);
      8. std::cout << "Original value: " << num << std::endl; // 输出结果为 5,因为形参的修改不会影响实参
      9. return 0;
      10. }
      引用传递示例:
      1. #include <iostream>
      2. void changeValue(int &x) {
      3. x = 10;
      4. }
      5. int main() {
      6. int num = 5;
      7. changeValue(num);
      8. std::cout << "Modified value: " << num << std::endl; // 输出结果为 10,因为形参的修改会影响实参
      9. return 0;
      10. }
      地址传递示例:
      1. #include <iostream>
      2. void changeValue(int *x) {
      3. *x = 10;
      4. }
      5. int main() {
      6. int num = 5;
      7. changeValue(&num);
      8. std::cout << "Modified value: " << num << std::endl; // 输出结果为 10,因为通过指针修改了实参的值
      9. return 0;
      10. }

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

闽ICP备14008679号