当前位置: 首页 > news >正文

C++中的功能 及 用法

参考资料:

C++中&的功能 及 用法 - konglingbin - 博客园 (cnblogs.com)

对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。在 c++学习提高篇(3)---隐式指针的文章中我详细介绍了在隐式指针&的用法,其实这两个概念是统一的。 

引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。

“&”作为逻辑运算符以及作为位运算符的功能。

常被用作下面的功能:

1、取址

int *p = &a;

这行代码的意思是将变量a的地址赋值给指针变量p

在这个语句执行后,p指向了a的地址,也就是说p里面存储的是变量a的地址。我们可以通过p指针来访问a的值:“*p”

2,引用

int &b = a;

此时b就是a的引用,或者称之为别名。如果修改b的值,那么a的值也会相应地发生改变。如b=1,那么a也就会跟着等于1。这种方式在函数传参的时候很常见,如果想函数执行完改变原参数的值,就应该在传参的时候,传入原来的实参的引用。

3,常引用

  1. const int &b = a;
  2. b = 1;//错误
  3. a = 1;//正确

这种做法还有一些其它的应用,以后阐述。

4,作为函数的返回

以引用返回函数值,定义函数时需要在函数名前加&,用引用返回一个函数值的最大好处是,在内存中不产生被返回值的副本。

int max(int a, int b) { return (a > b) ? a : b; }

在上述代码中,函数max返回了一个int类型的值,如果我们想要在另一个函数中使用max函数的返回值,可以将它存储在一个变量中,例如:

int a = 10, b = 20;
int max_value = max(a, b);

在上述代码中,max_value存储了max函数的返回值。但是,这样做会产生一个被返回值的副本,因为max函数返回的是一个新的int类型的值,需要将这个值复制到max_value中。如果我们使用引用返回函数值,可以避免产生副本,例如:

int& max(int& a, int& b) { return (a > b) ? a : b; }

在上述代码中,函数max返回了一个int类型的引用,这个引用指向ab中较大的那个数。如果我们想要在另一个函数中使用max函数的返回值,可以将它存储在一个引用变量中,例如:

int a = 10, b = 20;
int& max_value = max(a, b);

在上述代码中,max_value是一个引用变量,它指向ab中较大的那个数。这样做不会产生被返回值的副本,因为返回的是原始数据的引用,而不是复制一份数据到另外一个地方。

 一、引用简介

引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。

引用的声明方法:类型标识符 &引用名=目标变量名;

【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名

  说明:

  (1)&在此不是求地址运算,而是起标识作用。

  (2)类型标识符是指目标变量的类型。

  (3)声明引用时,必须同时对其进行初始化。

  (4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。

http://www.lryc.cn/news/58847.html

相关文章:

  • Linux解除指定端口占用进程教程
  • 雪花算法简介
  • 人口普查数据集独热编码转换
  • 牛客过第二遍
  • 科普:java与JavaScript的区别
  • 【教程】Unity 与 Simence PLC 联动通讯
  • 视频编解码(一)之virtio-gpu环境搭建
  • JDBC概述三(批处理+事务操作+数据库连接池)
  • MappedByteBuffer 详解(图解+秒懂+史上最全)
  • 顶点程序经典案例——树木生长
  • 在云计算环境下保护Java应用程序的有效措施
  • vscode-markdown-代码片段及快捷键设置
  • ModelNet40数据集
  • 【都2023年了,还在问网络安全怎么入门】
  • Apple Xcode 14.3 (14E222b) 正式版发布下载
  • 【Linux】sar常用选项介绍
  • PHP 单笔转账到支付宝账户,支付宝公钥证书实现版本
  • 第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 E 题
  • Python 小型项目大全 21~25
  • MinIO从信息泄漏到RCE
  • 202.Spark(九):SparkStreaming案例实操
  • GlusterFS(GFS)分布式文件系统
  • ChatGPT文本框再次升级,打造出新型操作系统
  • DPU02国产USB转UART控制芯片替代CP2102
  • Softing新版HART多路复用器软件支持西门子控制器
  • 〖Python网络爬虫实战⑫〗- XPATH语法介绍
  • 实例方法、类方法、静态方法、实例属性、类属性
  • 数据结构---二叉树
  • CMake——从入门到百公里加速6.7s
  • 无公网IP,在外公网远程访问RabbitMQ服务「内网穿透」