首頁 >後端開發 >C++ >為什麼無法使用按值呼叫修改 C/C 函數中的輸入參數?

為什麼無法使用按值呼叫修改 C/C 函數中的輸入參數?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-13 15:49:02858瀏覽

Why Can't I Modify Input Parameters in C/C   Functions Using Call-by-Value?

為什麼按值呼叫無法更新輸入參數

在C/C 中,函數參數通常是按值傳遞的,這意味著建立輸入變數的副本並將其傳送到函數。這意味著函數內所做的任何修改只會影響本機副本,而不影響原始變數。

考慮範例:

#include <iostream>

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,輸出仍為 5。

這是因為 changeValue 函數從 main() 接收 value 變數的副本。然後,該函數對該本機副本進行操作,該副本獨立於 main() 中的原始變數。因此,函數內所做的變更不會延續到原始變數。

使用引用呼叫修改輸入參數

修改原始變數在函數內部,必須使用參考呼叫。這允許函數存取和修改記憶體中的實際變量,而不僅僅是副本:

#include <iostream>

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() 中的實際變量,並且輸出正確反映了變更。

以上是為什麼無法使用按值呼叫修改 C/C 函數中的輸入參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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