為什麼按值呼叫無法更新輸入參數
在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中文網其他相關文章!