C++ 中函式引數和引數的區別
Jinku Hu
2023年10月12日
本文將解釋 C++ 中函式引數和引數之間的區別。
C++ 函式剖析
函式是任何相對複雜的程式的通用構建塊。它們可以將程式中的迴圈例程定義為單獨的塊,並在需要執行相應的程式碼時呼叫它們。將一個程式拆分成多個函式,使程式更加模組化,易於維護和理解。因此,這些程式通常更易於測試和除錯。
函式通常具有唯一標識它們的名稱;但是,函式過載等一些概念允許程式設計師定義多個同名函式;我們將在後面的段落中探討這個特性。Lambda 表示式也包含在混合中,它提供了一種定義未命名函式物件的方法。功能塊中不同語句的總和稱為函式體。函式還有一個返回型別,它表示傳遞迴呼叫者的值的型別。
該函式的另一個關鍵部分是引數列表,這些參數列示宣告為函式簽名一部分的變數。呼叫者通常會在函式作用域中傳遞一些具體的值來初始化這些變數。後面的值稱為引數,它們被稱為函式引數的初始值設定項。儘管如此,術語 - 引數和引數在某些上下文中可以互換使用。
在下面的示例程式中,我們向你展示了一個名為 - printVector
的函式,它的簽名中只定義了一個引數(名為 vec
)。當程序在 main
函式中被呼叫時,vec1
引數被傳遞給它。一旦執行移動到 printVector
函式體,vec
引數將被初始化為相應的值。
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
template <typename T>
void printVector(const vector<T> &vec) {
for (auto &i : vec) {
cout << i << "; ";
}
cout << endl;
}
int main() {
vector<int> vec1{11, 82, 39, 72, 51, 32, 91};
printVector(vec1);
return EXIT_SUCCESS;
}
輸出:
11; 82; 39; 72; 51; 32; 91;
上一章提到,C++ 支援函式過載的概念,允許程式設計師定義多個同名的函式。但是,這些函式必須因它們接受的引數數量或引數型別而異。
下面的程式演示了過載函式的基本用法,它們分別將兩個 int
或 double
型別的數字相乘。
#include <iostream>
using std::cout;
using std::endl;
int multiply(int x, int y) { return x * y; }
double multiply(double x, double y) { return x * y; }
int main() {
int i1 = 10;
double d1 = 0.1;
cout << multiply(i1, i1 + 1) << endl;
cout << multiply(d1, d1 + 1) << endl;
return EXIT_SUCCESS;
}
輸出:
110
0.11
作者: Jinku Hu