#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 | 輸出信息到控制臺 |
如果你還不太理解“引用”這個概念,可以把它想象成某個變量的別名。就像一個人有兩個名字一樣,兩個名字指向的是同一個人。