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

C++入门【29-C++ 把引用作为返回值】

通过使用引用来替代指针,会使 C++ 程序更容易阅读和维护。C++ 函数可以返回一个引用,方式与返回一个指针类似。

当函数返回一个引用时,则返回一个指向返回值的隐式指针。这样,函数就可以放在赋值语句的左边。例如,请看下面这个简单的程序:

实例

#include <iostream>using namespace std;double vals[] = {10.1, 12.6, 33.1, 24.1, 50.0};double& setValues(int i) {  double& ref = vals[i];    return ref;   // 返回第 i 个元素的引用,ref 是一个引用变量,ref 引用 vals[i]
}// 要调用上面定义函数的主函数int main ()
{cout << "改变前的值" << endl;for ( int i = 0; i < 5; i++ ){cout << "vals[" << i << "] = ";cout << vals[i] << endl;}setValues(1) = 20.23; // 改变第 2 个元素setValues(3) = 70.8;  // 改变第 4 个元素cout << "改变后的值" << endl;for ( int i = 0; i < 5; i++ ){cout << "vals[" << i << "] = ";cout << vals[i] << endl;}return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

改变前的值
vals[0] = 10.1
vals[1] = 12.6
vals[2] = 33.1
vals[3] = 24.1
vals[4] = 50
改变后的值
vals[0] = 10.1
vals[1] = 20.23
vals[2] = 33.1
vals[3] = 70.8
vals[4] = 50

当返回一个引用时,要注意被引用的对象不能超出作用域。所以返回一个对局部变量的引用是不合法的,但是,可以返回一个对静态变量的引用。

int& func() {int q;//! return q; // 在编译时发生错误static int x;return x;     // 安全,x 在函数作用域外依然是有效的}

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

相关文章:

  • 基于Java SSM框架实现企业车辆管理系统项目【项目源码】
  • MyBatis的配置及简单使用
  • 【UE Niagara学习笔记】07 - 火焰的热变形效果
  • 深度学习模型中 argparse 模块Python 脚本的部分参数解读
  • 在win10和Linux上配置SSH 无密码登录
  • 【VUE】无法加载文件 \node\vue.ps1,因为在此系统上禁止运行脚本。问题解决
  • C //练习 4-12 运用printd函数的设计思想编写一个递归版本的itoa函数,即通过递归调用把整数转换为字符串。
  • 【python playwright 安装及验证】
  • 极简云源码已经开源
  • Shell中cp和mv命令说明
  • cssip 第11章 : 安全网络架构和保护网络组件
  • ITSS申报条件以及评审方式
  • Qt中QByteArray之元素访问
  • java实现教务管理系统
  • NPS配置https访问web管理页面
  • nginx和CDN应用
  • Keil5如何生成反汇编文件
  • 网络地图服务(WMS)详解
  • 【排序篇3】快速排序、归并排序
  • Python中的@property
  • 二叉树基础oj练习(单值二叉树、相同的树、二叉树的前序遍历)
  • 自动化创建ETX用户帐号
  • Android 实现集合去重的方法
  • 【Vue3】2-12 : 【案例】搜索关键词加筛选条件的综合
  • unity小程序websocket:nginx配置https (wss)转http (ws)及其他问题解决
  • MySql数据库对接Orcal数据库,需要考虑的前提问题
  • K8S的存储卷---数据卷
  • 【量化交易故事】小明开启了量化创业之旅-01
  • ffmpeg写YUV420文件碰到阶梯型横线或者条纹状画面的原因和解决办法
  • 案例:新闻数据加载