首頁  >  文章  >  後端開發  >  按值呼叫如何影響 C 中的參數修改?

按值呼叫如何影響 C 中的參數修改?

Barbara Streisand
Barbara Streisand原創
2024-11-12 12:06:02682瀏覽

How Does Call-by-Value Affect Argument Modification in C  ?

理解C 中的按值呼叫

在這個按值呼叫範例中,一個名為changeValue() 的函數接受一個整數argument,它表示從main() 函數傳遞的實際參數的副本。當函數將參數的值變更為 6 時,它會修改副本,而不是儲存在 main() 函數中的原始值。

這是因為按值呼叫會建立參數的新副本並將其傳遞給函數。因此,對函數內部副本所做的任何更改都不會影響原始值。

使用 Call-by-Reference 解決問題

修改原始參數從 main() 發送,我們需要使用引用呼叫。這涉及將引用(別名)傳遞給實際參數,而不是副本。

在範例中,這可以透過將changeValue() 函數簽章更改為:

void changeValue(int &value)

透過在參數類型之前使用與號(&),我們表明該函數接收對原始變數的引用。對參考所做的任何更改都將直接影響 main() 中的原始參數。

修訂後的程式碼:

#include 
using namespace std;

void changeValue(int &value);

int main()
{
  int value = 5;
  changeValue(value);

  cout << "The value is : " << value << "." << endl;

  return 0;
}

void changeValue(int &value)
{
  value = 6;
}

有了此更改,當changeValue() 設定時引用6,main() 中的原始值將更改為6,導致輸出「The value is : 6.」。

以上是按值呼叫如何影響 C 中的參數修改?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn