Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Apakah nilai lulus dan rujukan lulus
Pengalihan nilai adalah untuk menghantar salinan parameter kepada fungsi, jadi fungsi menerima salinan nilai parameter, bukan parameter itu sendiri Sebarang pengubahsuaian pada parameter di dalam fungsi hanya akan menjejaskan salinan ini, bukan yang asal nilai pembolehubah. Pass by reference adalah untuk menghantar alamat atau rujukan parameter kepada fungsi. Ini bermakna bahawa fungsi menerima rujukan kepada data asal, bukan salinan data. Sebarang pengubahsuaian pada parameter di dalam fungsi akan menjejaskan data asal secara langsung. Kedua-dua kaedah penyampaian ini mempunyai aplikasi, kelebihan dan keburukan tersendiri dalam bahasa pengaturcaraan dan senario yang berbeza.
Sistem pengendalian tutorial ini: sistem Windows 10, komputer DELL G3.
Melepasi nilai dan lulus melalui rujukan ialah dua cara biasa untuk menghantar parameter, yang digunakan dalam bahasa pengaturcaraan untuk menghantar data daripada fungsi ke fungsi. Kedua-dua kaedah pemindahan ini mempunyai perbezaan penting dalam memproses data.
1. Lulus nilai
Pelulusan nilai adalah untuk menghantar salinan parameter kepada fungsi, jadi fungsi menerima salinan nilai parameter, bukan parameter itu sendiri. Sebarang pengubahsuaian yang dibuat pada parameter di dalam fungsi hanya akan menjejaskan salinan ini, bukan nilai pembolehubah asal. Penghantaran nilai sering digunakan untuk jenis data asas (seperti int, float) dalam C dan C++.
Ciri utama penghantaran nilai ialah fungsi menerima nilai sebenar parameter, bukan rujukan kepada parameter. Ini bermakna apabila fungsi menerima argumen yang diluluskan oleh nilai, ia sebenarnya beroperasi pada salinan nilai argumen, bukannya argumen asal itu sendiri. Oleh itu, pengubahsuaian kepada parameter dalam fungsi tidak akan menjejaskan nilai pembolehubah asal.
Sebagai contoh, dalam bahasa C, penghantaran nilai boleh dicapai dengan cara berikut:
void increment(int a) { a = a + 1; } int main() { int x = 5; increment(x); printf("%d\n", x); // 输出仍然是5,因为函数increment操作的是x的副本,不影响x本身 return 0; }
Dalam contoh ini, fungsi kenaikan menerima parameter integer a dan mengubah suai nilainya dengan menambah 1. Walau bagaimanapun, pengubahsuaian ini tidak akan menjejaskan nilai pembolehubah asal x, kerana a hanyalah salinan x.
2. Lulus melalui rujukan
berbeza daripada lulus mengikut nilai Melalui rujukan adalah untuk menghantar alamat atau rujukan parameter kepada fungsi. Ini bermakna fungsi menerima rujukan kepada data asal, bukan salinan data. Sebarang pengubahsuaian pada parameter di dalam fungsi akan menjejaskan data asal secara langsung.
Ciri utama rujukan lulus ialah fungsi menerima rujukan kepada data asal, bukan salinan data. Ini bermakna apabila fungsi menerima hujah yang diluluskan melalui rujukan, ia sebenarnya merupakan rujukan langsung kepada data asal, jadi sebarang pengubahsuaian pada hujah akan menjejaskan data asal.
Dalam C++, hantaran rujukan boleh dicapai dengan menggunakan penunjuk atau rujukan:
void increment(int* a) { *a = *a + 1; } int main() { int x = 5; increment(&x); std::cout << x << std::endl; // 输出是6,因为函数increment直接修改了x的值 return 0; }
Dalam contoh ini, fungsi kenaikan menerima penunjuk a yang menunjuk kepada integer dan mengubah suai nilai x dengan membatalkan rujukan. Oleh kerana a ialah rujukan kepada x, pengubahsuaian kepada *a akan secara langsung mempengaruhi nilai x. Oleh itu, apabila kenaikan(&x) dipanggil, nilai x diubah suai kepada 6.
Ringkasnya, perbezaan utama antara pemindahan nilai dan pemindahan rujukan ialah: pemindahan nilai adalah untuk memindahkan salinan nilai parameter, dan pengubahsuaian pada salinan tidak akan menjejaskan data asal manakala pemindahan rujukan adalah untuk memindahkan rujukan kepada data asal, dan pengubahsuaian pada rujukan akan menjejaskan data asal secara langsung. Kedua-dua kaedah penyampaian ini mempunyai aplikasi, kelebihan dan keburukan tersendiri dalam bahasa pengaturcaraan dan senario yang berbeza.
Atas ialah kandungan terperinci Apakah nilai lulus dan rujukan lulus. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!