C++的引用变量作为函数参数

一、问题引入

C++的中新增一个特性:按引用传递变量,虽然与按传递变量的地址可以实现相同的结果,但引用有其独特的地方。

引用传递: 引用经常被用作函数参数,使得函数中的变量名成为调用程序中的变量的别名。

通过引用变量用作参数,函数将使用原始数据,而不是其副本。

二、解决过程

举例说明:

#include <iostream>

using namespace std;


void swapv(int a, int b)    // 传变量的值
{
    int temp = a;
    a = b;
    b = temp;
}
void swapp(int *a, int *b)  // 传变量的地址
{
    int temp = *a;
    *a = *b;
    *b= temp;
}
void swapq(int & a, int & b) // 传引用变量
{
    int temp = a;
    a = b;
    b = temp;
}

int main(void)
{
    int wallet1 = 120;
    int wallet2 = 50;
    cout << "source wallet1:" << wallet1 << endl;
    cout << "source wallet2:" << wallet2 << endl;
    cout << endl;

    swapv(wallet1, wallet2);
    cout << "传变量的值" << endl;
    cout << "wallet1:" << wallet1 << endl;
    cout << "wallet2:" << wallet2 << endl;
    cout << endl;

    wallet1 = 120;
    wallet2 = 50;
    swapp(&wallet1, &wallet2);
    cout << "传变量的地址" << endl;
    cout << "wallet1:" << wallet1 << endl;
    cout << "wallet2:" << wallet2 << endl;
    cout << endl;

    wallet1 = 120;
    wallet2 = 50;
    swapq(wallet1, wallet2);
    cout << "传引用变量" << endl;
    cout << "wallet1:" << wallet1 << endl;
    cout << "wallet2:" << wallet2 << endl;
    cout << endl;

    return 0;
}

? 运行结果

C++的引用变量作为函数参数

三、反思总结

C++新增的这项特性时对C语言的超越,C语言只能按值传递。

在使用传递变量的地址, 在函数使用的整个过程中, 都需要使用解引用运算符 * ,而 传递引用变量, 则可以使用使用变量。

因为引用参数实际上是基于指针的代码的另一个接口,那么什么时候应使用引用?、什么时候应使用指针?、什么时候应按值传递?

C++的引用变量作为函数参数

四、参考引用

C++ Primer Plus:中文版 (第六版) 第8章

原文链接:https://www.cnblogs.com/caojun97/p/17317803.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++的引用变量作为函数参数 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • 05、【算例】openFoam盖驱动空腔流动

    管网:https://doc.cfd.direct/openfoam/user-guide-v9/cavity 一、算例实现 文件结构 0:存放初场 constant:存放网格信息 system:存放网格划分、计算等工具 1、画网格 blockMesh 2、求解 icoFoam 3、保存文件 touch cavity.OpenFOAM 4、后处理 parav…

    C++ 2023年4月18日
    00
  • C++ 测试框架 GoogleTest 初学者入门篇 乙

    *以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/aFeiOGO-N9O7Ab_8KJ2wxw 开发者虽然主要负责工程里的开发任务,但是每个开发完毕的功能都是需要开发者自测通过的,所以经常会听到开发者提起单元测试的话题。那么今天我就带大伙一起来看看大名鼎鼎的谷歌 C++ 测试…

    C++ 2023年4月18日
    00
  • 最短路径问题

    平面上有n个点(n<=100),每个点的坐标均在-10000~10000之间,其中的一些点之间有连线。 若有连线,则表示可从一个点到达另一个点,即两点间有通路,同路的距离为两点间的直线距离。现在的任务是找出从一点到另一点之间的最短路径。 小提示: 两点的距离:如果点\(A\)坐标为\((x_A,y_A)\),点\(B\)的坐标为\((x_B,y_B)\),\…

    C++ 2023年4月24日
    00
  • 【Visual Leak Detector】在 VS 高版本中使用 VLD

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。 本篇介绍如何在 VS 高版本中使用 vld2.5.1。同系列文章目录可见 《内存泄漏检测工具》目录 目录 说明 1. 使用前的准备 2. 在 VS 2015 及更早版本中使用 VLD 3. 在 VS 高版本中使用 VLD 3.1 参考资料:在 VS 2017 中使用 VLD 3.2 参考资料:在…

    C++ 2023年5月6日
    00
  • C++/Qt网络通讯模块设计与实现(总结)

    至此,C++/Qt网络通讯模块设计与实现已分析完毕,代码已应用于实际产品中。 C++/Qt网络通讯模块设计与实现(一) 该章节从模块的功能需求以及非功能需求进行分析,即网络通讯模块负责网络数据包的发送、接收以及对外提供功能调用以及接口回调,其不进行产品业务的实现,达到平台化复用的目的,给出了类图,如下所示::   符合先设计再开发的思想,各类的功能也有详细描…

    C++ 2023年4月18日
    00
  • 【Qt6】QWindow类可以做什么

    原来的水文标题是“用 VS Code 搞 Qt6”,想想还是直接改为“Qt6”,反正这个用不用 VS Code 也能搞。虽然我知道大伙伴们都很讨厌 CMake,但毕竟这厮几乎成了 C++ 的玩家规范了。Qt 也算识大体,支持用 CMake 来构建程序。所以,只要你用的是能写 C++ 的工具,理论上都能搞 Qt。 创建应用程序界面的时候,我们一般会选用 QWi…

    C++ 2023年4月24日
    00
  • 面试最常问的数组转树,树转数组 c++ web框架paozhu实现

    刚毕业同学,找工作常被问 二维数组转树,树转二维数组 需要支持无限层级实现,如果你了解这个语言那么实现起来还要一番思考 c++ web框架 paozhu使用 需要实现数据库表数据到前台菜单实现,就是这种功能 二维数组转树,树转二维数组 保存时候树二维数组,展示时候树树状。 这个技术难点在于无限递归,这个树程序基本原理 现在看看c++怎么实现的,无限递归,家肯…

    C++ 2023年4月25日
    00
  • C语言代码规范

    一、问题引入 初入编程世界,我们不知道什么叫做好代码。一切以实现功能和快速上线项目为主,但编程经验增加,发现代码越来越难写,越来越难改。导致这样的原因是没有遵循一般性的编程规则或则没有良好的编程风格。俗话说:“无规矩不成方圆”,在编程水平上来后,就更应该遵循规则。 傻瓜都能写出计算机可以理解的代码。唯有能写出人类容易理解的代码的,才是优秀的程序员 好代码的检…

    C语言 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部