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日

相关文章

  • LeetCode 力扣 205. 同构字符串

    给定两个字符串 s 和 t ,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。 示例 1: 输入:s = “egg”, t = “add”输出:true示例…

    C++ 2023年4月18日
    00
  • 洛谷:P5716日份天数

    题目描述 输入年份和月份,输出这一年的这一月有多少天。需要考虑闰年。 输入格式 输入两个正整数,分别表示年份 \(y\) 和月数 \(m\),以空格隔开。 输出格式 输出一行一个正整数,表示这个月有多少天。 样例 #1 样例输入 #1 1926 8 样例输出 #1 31 样例输入 #2 2000 2 样例输出 #2 29 提示 数据保证 \(1583 \le…

    C++ 2023年4月24日
    00
  • 【Visual Leak Detector】配置项 MaxDataDump

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍 VLD 配置文件中配置项 MaxDataDump 的使用方法。同系列文章目录可见 《内存泄漏检测工具》目录 目录 说明 1. 配置文件使用说明 2. 设置每个泄漏块数据显示的最大字节数 2.1 测试代码 2.2 MaxDataDump 为空时的输出 2.3 MaxDataDump = 0…

    C++ 2023年4月18日
    00
  • NX二次开发:Checkmate例子根据dfa文件检查模型数据

    NX中的checkmate功能是用于检查模型、图纸数据的工具,在UGOPEN中有例子。手动操作可以检查已加载的装配下所有零部件,可以设置通过后保存模型,检查结果保存到Teamcenter中,默认保存在零组件版本下。 代码中可以设置多个检查规则。相关设置可以在用户默认设置中进行设置。 1 //============================= 2 //…

    C++ 2023年4月18日
    00
  • 顺序表的实现:Book_Manage_System

    一、问题引入 图书信息管理系统:出版社有一些图书数据保存在一个文本文件book.txt 中,为简单起见,在此假设每种图书只包括三部分信息:ISBN (书号)、书名和价格,文件中的部分数据如图2.1 所示。现要求实现一个图书信息管理系统,包括以下6个具体功能。 (1) 查找:根据指定的ISBN 或书名查找相应图书的有关信息, 并返回该图书在表中的位置序号。(2…

    C语言 2023年4月18日
    00
  • L1-080 乘法口诀数列*(使用C++)

    L1-080 乘法口诀数列 分数 20 全屏浏览题目 切换布局 作者 陈越单位 浙江大学   本题要求你从任意给定的两个 1 位数字 a1​ 和 a2​ 开始,用乘法口诀生成一个数列 {an​},规则为从 a1​ 开始顺次进行,每次将当前数字与后面一个数字相乘,将结果贴在数列末尾。如果结果不是 1 位数,则其每一位都应成为数列的一项。 输入格式: 输入在一行…

    C++ 2023年4月18日
    00
  • day3 函数的定义和调用,练习编写简单的程序(记录1)

    一、函数的定义 可以分为以下两种: 1、函数声明和函数定义分离 这种方法将函数声明和函数定义分开,通常在头文件中先声明函数原型,然后在源文件中实现函数定义。 例如,头文件 example.h 中声明了一个函数 add: #ifndef EXAMPLE_H #define EXAMPLE_H int add(int a, int b); // 声明函数原型 #…

    C++ 2023年4月18日
    00
  • 07、【算例】openfoam带孔盘体应力分析

    官网:https://doc.cfd.direct/openfoam/user-guide-v9/platehole$FOAM_TUTORIALS/stressAnalysis/solidDisplacementFoam下的案例 1、网格划分 /*——————————–*- C++ -*—————…

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