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

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;

这段代码是用 C++ 编写的,主要功能是通过引用(reference)来修改数组中的元素。下面我会逐行解释这段代码的作用,帮助你理解它。


🔹整体思路

该程序定义了一个全局数组 vals,并定义了一个函数 setValues(int i),该函数返回数组中第 i 个元素的引用。通过这个引用,我们可以在 main() 函数中直接修改数组中的值。


🔹代码详解

📌1. 引入头文件和命名空间

 

cpp

深色版本

#include <iostream>
using namespace std;
  • #include <iostream>:引入输入输出流库,用于使用 cincout 等。
  • using namespace std;:使用标准命名空间,这样我们可以直接写 cout 而不是 std::cout

📌2. 定义全局数组

 

cpp

深色版本

double vals[] = {10.1, 12.6, 33.1, 24.1, 50.0};
  • 这是一个 double 类型的全局数组,包含 5 个元素。
  • 元素分别是:10.1、12.6、33.1、24.1、50.0。

📌3. 定义函数 setValues

 

cpp

深色版本

double& setValues(int i) {double& ref = vals[i];return ref;
}
  • 这个函数接收一个整数 i,表示数组索引。
  • double& ref = vals[i];:创建一个对 vals[i] 的引用变量 ref
  • return ref;:将这个引用返回出去。

⚠️ 重点理解:

  • 返回的是引用(double&),这意味着调用者可以直接通过这个返回值修改原数组的值。
  • 如果返回的是 double(非引用),就只是返回一个拷贝,不能用来修改原数据。

📌4. 主函数 main()

 

cpp

深色版本

int main ()
{cout << "改变前的值" << endl;for ( int i = 0; i < 5; i++ ){cout << "vals[" << i << "] = ";cout << vals[i] << endl;}
  • 打印数组在修改前的内容。
 

cpp

深色版本

    setValues(1) = 20.23; // 改变第 2 个元素setValues(3) = 70.8;  // 改变第 4 个元素
  • 因为 setValues(i) 返回的是 vals[i] 的引用,所以可以像 vals[i] 那样赋值。
  • setValues(1) = 20.23; 实际上是在修改 vals[1]
  • setValues(3) = 70.8; 实际上是在修改 vals[3]
 

cpp

深色版本

    cout << "改变后的值" << endl;for ( int i = 0; i < 5; i++ ){cout << "vals[" << i << "] = ";cout << vals[i] << endl;}
  • 打印修改后的数组内容。
 

cpp

深色版本

    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

🧠总结

功能解释
double vals[]定义一个 double 数组
double& setValues(int i)返回数组元素的引用
setValues(1) = 20.23利用引用特性修改数组中的元素
cout输出信息到控制台

如果你还不太理解“引用”这个概念,可以把它想象成某个变量的别名。就像一个人有两个名字一样,两个名字指向的是同一个人。

相关文章:

  • 文件名是 ‪E:\20250512_191204.mp4, EV软件录屏,未保存直接关机损坏, 如何修复?
  • 数据统计分析及可视化
  • 最佳实践PPT | 数据架构设计总体规划方案数据中台架构数据架构图解决方案
  • 如何用Jsoup库提取商品名称和价格?
  • 企业网络新选择:软件定义架构下的MPLS
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】附录-D. 扩展插件列表(PostGIS/PostgREST等)
  • TTS-Web-Vue系列:Vue3实现内嵌iframe文档显示功能
  • idea插件使用
  • 3、ubantu系统docker常用命令
  • Git 彻底清理大文件
  • React学习———React.memo、useMemo和useCallback
  • C PRIMER PLUS——第10节:结构体、共用(同)体/联合体
  • C++函数三剑客:缺省参数·函数重载·引用的高效编程指南
  • Electron入门指南:用前端技术打造桌面应用
  • 更换git位置并在pycharm中重新配置
  • LeetCode 题解 41. 缺失的第一个正数
  • CycleISP: Real Image Restoration via Improved Data Synthesis通过改进数据合成实现真实图像恢复
  • 详细说说Spring的IOC机制
  • 注解和 XML 两种方式有什么区别?
  • 单调栈简单习题分析
  • 中欧金融工作组第二次会议在比利时布鲁塞尔举行
  • 4月新增社融1.16万亿,还原地方债务置换影响后信贷增速超过8%
  • 科技部等七部门:优先支持取得关键核心技术突破的科技型企业上市融资
  • “典孝急乐批麻蚌赢”:互联网“八字真言”与当代赛博赢学
  • 韩国总统选战打响:7人角逐李在明领跑,执政党临阵换将陷入分裂
  • 长三角议事厅·周报|从模速空间看上海街区化AI孵化模式