Mengapa Panggilan demi Nilai Gagal Mengemas kini Parameter Input
Dalam C/C , parameter fungsi biasanya diluluskan mengikut nilai, bermakna salinan pembolehubah input dicipta dan dihantar ke fungsi. Ini menunjukkan bahawa sebarang pengubahsuaian yang dibuat dalam fungsi hanya mempengaruhi salinan setempat dan bukan pembolehubah asal.
Pertimbangkan contoh:
#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; }
Kod ini cuba mengubah suai nilai parameter input dalam fungsi changeValue. Walau bagaimanapun, output kekal 5, walaupun fungsi menukar salinan setempat kepada 6.
Ini kerana fungsi changeValue menerima salinan pembolehubah nilai daripada main(). Fungsi ini kemudiannya beroperasi pada salinan tempatan ini, yang bebas daripada pembolehubah asal dalam main(). Oleh itu, perubahan yang dibuat dalam fungsi tidak dibawa ke pembolehubah asal.
Menggunakan Panggilan demi Rujukan untuk Mengubah Suai Parameter Input
Untuk mengubah suai pembolehubah asal dari dalam fungsi, panggilan demi rujukan mesti digunakan. Ini membenarkan fungsi untuk mengakses dan mengubah suai pembolehubah sebenar dalam ingatan, bukannya hanya salinan:
#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; }
Dalam contoh ini, fungsi changeValue mengambil rujukan kepada pembolehubah nilai, yang diwakili oleh ampersand (& ). Ini membolehkan fungsi mengakses dan mengubah suai pembolehubah asal secara langsung. Akibatnya, apabila fungsi menetapkan nilai kepada 6, ia mengubah suai pembolehubah sebenar dalam main(), dan output mencerminkan perubahan dengan betul.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mengubah Suai Parameter Input dalam Fungsi C/C Menggunakan Panggilan demi Nilai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!