Bagaimanakah Panggilan demi Nilai Mempengaruhi Pengubahsuaian Hujah dalam C ?

Barbara Streisand
Lepaskan: 2024-11-12 12:06:02
asal
724 orang telah melayarinya

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)
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan