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>
:引入输入输出流库,用于使用cin
、cout
等。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 | 输出信息到控制台 |
如果你还不太理解“引用”这个概念,可以把它想象成某个变量的别名。就像一个人有两个名字一样,两个名字指向的是同一个人。