C++ 中函式引數和引數的區別

Jinku Hu 2023年10月12日
C++ 中函式引數和引數的區別

本文將解釋 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++ 支援函式過載的概念,允許程式設計師定義多個同名的函式。但是,這些函式必須因它們接受的引數數量或引數型別而異。

下面的程式演示了過載函式的基本用法,它們分別將兩個 intdouble 型別的數字相乘。

#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
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook

相關文章 - C++ Function