Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Panggilan demi Nilai Mempengaruhi Pengubahsuaian Hujah dalam C ?

Bagaimanakah Panggilan demi Nilai Mempengaruhi Pengubahsuaian Hujah dalam C ?

Barbara Streisand
Barbara Streisandasal
2024-11-12 12:06:02725semak imbas

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

Memahami Panggilan demi Nilai dalam C

Dalam contoh panggilan demi nilai ini, fungsi yang dipanggil changeValue() mengambil integer argumen, yang mewakili salinan argumen sebenar yang diluluskan daripada fungsi main(). Apabila fungsi menukar nilai argumen kepada 6, ia mengubah suai salinan dan bukan nilai asal yang disimpan dalam fungsi main().

Ini kerana nilai panggilan demi nilai mencipta salinan baharu argumen dan menghantarnya ke fungsi. Oleh itu, sebarang perubahan yang dibuat pada salinan di dalam fungsi tidak akan menjejaskan nilai asal.

Menyelesaikan Isu Menggunakan Panggilan demi Rujukan

Untuk mengubah suai hujah asal dihantar dari main(), kita perlu menggunakan panggilan demi rujukan. Ini melibatkan menghantar rujukan (alias) kepada hujah sebenar, bukannya salinan.

Dalam contoh, ini boleh dicapai dengan menukar tandatangan fungsi changeValue() kepada:

void changeValue(int &value)

Dengan menggunakan ampersand (&) sebelum jenis hujah, kami menunjukkan bahawa fungsi menerima rujukan kepada pembolehubah asal. Sebarang perubahan yang dibuat pada rujukan akan secara langsung mempengaruhi hujah asal dalam main().

Kod Disemak:

#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;
}

Dengan perubahan ini, apabila changeValue() ditetapkan rujukan kepada 6, nilai asal dalam main() akan ditukar kepada 6, menghasilkan output "Nilai ialah : 6.".

Atas ialah kandungan terperinci Bagaimanakah Panggilan demi Nilai Mempengaruhi Pengubahsuaian Hujah dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn