c++引用笔记

1 引用的基本使用

// 引用
// 作用:给变量起别名
// 语法:数据类型 &别名 = 原名int main(int argc, char const *argv[])
{int a = 10;int &b = a;cout << "a = " << a << endl;cout << "b = " << b << endl;b = 100;cout << "a = " << a << endl;cout << "b = " << b << endl;return 0;
}

2 引用注意事项

// 引用注意事项
// 1. 引用必须初始化
// 2. 引用一旦初始化,就不能改变int main(int argc, char const *argv[])
{int a = 10;int b = 20;int &r = a;r = b; // 赋值操作不影响引用本身,即r引用ar = 30;cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "r = " << r << endl;return 0;
}

3 引用做函数参数

// 引用做函数参数
// 作用:函数传参时,可以利用引用的技术让实参传递给形参时,修改实参变量的值
// 优点:可以简化指针操作,提高程序的可读性//1. 值传递
void swap01(int a, int b){int temp = a;a = b;b = temp;
}//2. 地址传递
void swap02(int *a, int *b){int temp = *a;*a = *b;*b = temp;
}//3. 引用传递
void swap03(int &a, int &b){int temp = a;a = b;b = temp;
}int main(int argc, char const *argv[])
{int a = 10;int b = 20;cout << "交换前:a = " << a << " b = " << b << endl;swap01(a, b);cout << "值传递 交换后:a = " << a << " b = " << b << endl;swap02(&a, &b);cout << "地址传递 交换后:a = " << a << " b = " << b << endl;swap03(a, b);cout << "引用传递 交换后:a = " << a << " b = " << b << endl;return 0;
}

4. 引用做函数的返回值

#include <iostream>
using namespace std;// 引用做函数返回值
// 作用:引用可以做函数的返回值存在的
// 注意:不要返回局部变量的引用
// 用法:函数调用作为左值// 返回局部变量的引用
int& test01(){int a = 10;return a;
}// 返回静态变量的引用
int& test02(){static int a = 10;cout << &a << endl;return a;
}int& test03(){static int a = 20;cout << "test03 " <<  &a << endl;return a;
}int main(int argc, char const *argv[])
{int &b = test01();cout << &b << endl;int &c = test02();cout << &c << endl;cout << c << endl;c = test03(); // c 指向的地址不变cout << c << endl;cout << &c << endl;// 函数调用作为左值test02() = 100;cout << "函数调用作为左值 " << c << endl;return 0;
}

5. 引用的本质

#include <iostream>
using namespace std;// 引用的本质
// 本质: 引用的本质是在c++内部实现一个指针常量// 转换为 int* const ref = &a;
void func(int &ref){ref = 100; // 内部实现 *ref = 100;
}int main(int argc, char const *argv[])
{int a = 10;// 自动转换为 int* const ref = &a; 指针常量是指针指向不可改,也说明为什么引用不可更改int &ref = a;    ref = 20; // 内部实现 *ref = 20;cout << "a = " << a << endl;cout << "ref = " << ref << endl;func(a);cout << "a = " << a << endl;return 0;
}

6 常量引用

/#include <iostream>
using namespace std;// 常量引用
// 作用:常量引用主要用来修饰形参,在调用函数时,该形参不允许修改// 转换为 const int* const ref = &a;
void func(const int &ref){cout <<  "ref " << ref << endl;// ref = 100; // 内部实现const int *ref = 100;
}int main(int argc, char const *argv[])
{int a = 10;// int &ref = 10; // 引用必须引用一块合法的内存// 加上const后,编译器将上面的代码修改为 int temp = 10; const int &ref = temp;const int &ref = 10; // 引用必须引用一块合法的内存// ref = 20; // 加入const 后,不可修改cout << ref << endl;func(a);a = 100;func(a);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/35765.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

网络基础和UDP函数的简单使用

网络发展 最开始&#xff0c;计算机是独立的个体&#xff0c;因为需求需要计算机之间交换数据&#xff0c;由局域网&#xff08;私网&#xff09;–>广域网&#xff08;公网&#xff09;&#xff0c;网络就逐渐发展起来了。 初识协议 协议就是一种约定 网络协议就是众多协…

Netty入门教程——认识Netty

Netty入门教程——认识Netty 什么是Netty&#xff1f; Netty 是一个利用 Java 的高级网络的能力&#xff0c;隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。 Netty 是一个广泛使用的 Java 网络编程框架&#xff08;Netty 在 2011 年获得了Duke’s Choice …

调用大模型api 批量处理图像 保存到excel

最近需要调用大模型&#xff0c;并将结果保存到excel中&#xff0c;效果如下&#xff1a; 代码&#xff1a; import base64 from zhipuai import ZhipuAI import os import pandas as pd from openpyxl import Workbook from openpyxl.drawing.image import Image from io i…

Python基于TensorFlow实现BP和LSTM神经网络的空气质量预测并使用SHAP解释模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 随着工业化进程的加速和城市化的扩展&#xff0c;空气污染成为全球面临的主要环境问题之一。空气质…

高效查找秘密武器一:位图

有这样的一个问题&#xff1a; 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数 中。 那么我们一般会想到这样做的 1.遍历&#xff0c;时间复杂度O(n) 2.排序&#xff08;N*logN&#xff09;&#xff0c…

对于小型企业,独立站和电商平台哪个更经济?

对于小型企业来说&#xff0c;选择独立站还是电商平台&#xff0c;需要根据各自的成本优势来决定。以下是一些关键点的比较&#xff1a; 平台费用&#xff1a; 电商平台&#xff1a;通常需要缴纳一定比例的交易佣金或年费&#xff0c;例如天猫、京东等平台的保证金和佣金费用相…

带权并查集和扩展域并查集的一些整理和理解(上)

请读者在有一定并查集基础上再阅读&#xff08;至少要知道什么是带权和扩展域并查集&#xff09; 在最近做题时候&#xff0c;我遇到了一些带权并查集和扩展域并查集的题目。我觉得它们都很难写也很难想&#xff0c;尤其是带权并查集我几乎第一时间无法想到是怎么做的&#xf…

json+Tomact项目报错怎么办?

在响应请求的时候&#xff0c;如果http响应没有指定响应数据的content-type&#xff0c;浏览器就不知道按照什么格式解析响应体的数据&#xff0c;因为浏览器只知道怎样解析http的行和头&#xff0c;再从头里获取响应体的字节长度和类型&#xff0c;按照你给的长度去截流&#…

极限激光雷达点云数据集

https://arxiv.org/pdf/2307.07607v5 ‎ - AirLab 他们的数据集里面有这么多极限场景 点云数据转换 他们的激光用的velodyne,录制的格式是【velodyne_msgs/VelodyneScan】 需要把【velodyne_msgs/VelodyneScan】转化成【sensor_msgs/PointCloud2】 我编译https://github.co…

信奥常考点:二叉树的构建(已知中序和 前序或后序 的情况下)

一、题目引入 这是来自CCF-GESP C七级认证 2024年9月的题目。 我们在此不解题&#xff0c;只把树画出来。 CCF-GESP 编程能力认证 C 七级 2024年9月份详细解析-CSDN博客 二、解题过程 我们可以根据先序遍历得出根节点是A&#xff0c;然后我们得到了A的左子树[B D]&#xff08;橙…

电容的概念和基本参数

电容基本概念 电容最简单的结构可由两个相互靠近的导体平面中间夹一层绝缘介质组成&#xff0c;当在电容两个极板间加上电压时&#xff0c;电容就会储存电荷&#xff0c;所以电容是一个充放电荷的电子元器件。电容量是电容储存电荷多少的一个量值&#xff0c;平板电容的电容量…

【js逆向专题】13.jsvmp补环境篇一

目录 一.了解jsvmp技术1. js虚拟机保护方案2.jsvmp实现原理3. 模拟jsvmp执行过程 二.环境检测1. 什么是环境检测2.案例讲解 三. 项目实战1. 案例11.逆向目标2. 项目分析1.补第一个referrer2. 调试技巧13. 调试技巧24. 补充sign5. 补 length6. 参数长短补充 3. 逆向结果 2. 案例…

高质量翻译在美国推广移动应用中的重要性

美国的移动应用市场是世界上竞争最激烈、利润最高的市场之一&#xff0c;为开发者提供了接触数百万潜在用户的机会。然而&#xff0c;进入这个市场需要的不仅仅是创新技术或令人信服的想法&#xff1b;它要求与目标受众进行有效地沟通和文化契合。在这个过程中&#xff0c;高质…

[Redis#17] 主从复制 | 拓扑结构 | 复制原理 | 数据同步 | psync

目录 主从模式 主从复制作用 建立主从复制 主节点信息 从节点信息 断开主从复制关系 主从拓扑结构 主从复制原理 1. 复制过程 2. 数据同步&#xff08;PSYNC&#xff09; 3. 三种复制方式 一、全量复制 二、部分复制 三、实时复制 四、主从复制模式存在的问题 在…

【Unity高级】如何动态调整物体透明度

本文介绍了如何设置及动态调整物体的透明度。 一、手动设置的方法 我们先来看下如何手动设置物体的透明度。 物体的透明与否是通过材质来设置的。只有我们把具有透明度的材质指给物体的渲染器&#xff08;Render&#xff09;&#xff0c;物体就被设置成相应的透明度了。 看一…

相机动态/在线标定

图1 图2 基本原理 【原理1】平行线在射影变换后会交于一点。如图所示,A为相机光心,蓝色矩形框为归一化平面,O为平面中心。地面四条黄色直线为平行且等距的车道线。HI交其中两条车道线于H、I, 过G作HI的平行线GM交车道线于M。HI、GM在归一化平面上的投影分别为JK、PN,二者会…

通俗易懂理解:网络安全恶意节点的检测与哨兵节点的激活【论文+代码】

以下资料参考来自本文末尾的参考资料与代码&#xff1a; 在网络安全中&#xff0c;恶意节点检测和哨兵节点激活是确保网络稳定性、可靠性和安全性的关键技术&#xff0c;尤其是在分布式系统、物联网 (IoT)、区块链网络等环境中。下面将详细介绍这两个概念及其应用。 一、恶意…

python作业

1.D 2.B 3.D 4.C 5.B 6.D 7.D 8.B 9.D 10. A 11.D 12.C 13.√ 14.√ 16.√ 17.√ 18.None 19.([1,3],[2]) 20. 列表思维导图

Redis(上)

Redis 基础 什么是 Redis&#xff1f; Redis &#xff08;REmote DIctionary Server&#xff09;是一个基于 C 语言开发的开源 NoSQL 数据库&#xff08;BSD 许可&#xff09;。与传统数据库不同的是&#xff0c;Redis 的数据是保存在内存中的&#xff08;内存数据库&#xf…

LabVIEW气缸摩擦力测试系统

基于LabVIEW的气缸摩擦力测试系统实现了气缸在不同工作状态下摩擦力的快速、准确测试。系统由硬件平台和软件两大部分组成&#xff0c;具有高自动化、精确测量和用户友好等特点&#xff0c;可广泛应用于精密机械和自动化领域。 ​ 项目背景&#xff1a; 气缸作为舵机关键部件…