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

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输出信息到控制台

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

http://www.xdnf.cn/news/6190.html

相关文章:

  • XILINX-DDR4-自定义componet(x8)-之一
  • 六西格玛觉醒:一场数据思维的启蒙运动​
  • 【江苏省】《信息技术应用创新软件适配改造成本评估规范》(DB32/T 4935-2024)-标准解读系列
  • 【Linux Nano Vim快捷键大全】
  • 基于EFISH-SCB-RK3576/SAIL-RK3576的康复训练机器人技术方案‌
  • Linux下批量提取子文件夹文件到当前目录
  • libmemcached库api接口讲解二
  • 股指期货套期保值怎么操作?
  • 【Linux】shell内置命令fg,bg和jobs
  • tensorflow安装及简单例程学习
  • 字符田字格绘制
  • Java的多线程笔记
  • 企业报表平台如何实现降本增效
  • requestAnimationFrame 与 requestIdleCallback 对比
  • JavaScript中执行上下文和执行栈是什么?
  • Linux `whoami` 命令深度解析与高阶应用指南
  • 【USRP】在linux下安装python API调用
  • 保姆级!MeloTTS部署 且支持流式接口
  • Vue3在使用渲染函数h时候使用v-loading
  • 最小二乘拟合曲线
  • C#强类型枚举的入门理解
  • C++矩阵操作:正交矩阵(旋转矩阵)
  • 级联与端到端对话系统架构解析:以Moshi为例
  • 材料×工艺×AI:猎板PCB重构汽车电子四层板技术逻辑
  • 基于大模型的TIA诊疗全流程智能决策系统技术方案
  • 经典还原反应解析:Wolff-Kishner机制与黄鸣龙改进法
  • DeepSeek部署中常见的问题及解决方案
  • 在 Android 的`Handler` 和 `Binder
  • 学前数学思维:等量代换
  • 多因子线性回归实战