Memahami perbezaan antara nilai lulus dan rujukan lulus adalah penting dalam C . Dalam artikel ini, kami menyelidiki butiran setiap mekanisme yang lulus dan menjelaskan cara ia mempengaruhi gelagat fungsi dan pembolehubah dalam atur cara.
Mengikut nilai merujuk kepada mencipta salinan pembolehubah asal, biasanya digunakan untuk primitif jenis data (cth., integer, rentetan), manakala rujukan lulus merujuk kepada menerima alamat pembolehubah asal, yang biasa digunakan untuk jenis data yang kompleks (cth., struktur, tatasusunan).
Imej yang disediakan dalam soalan dengan tepat menggambarkan perbezaan antara kedua-dua kaedah. Apabila melalui nilai, pendua dibuat, membuat sebarang pengubahsuaian kepada pembolehubah tempatan tidak memberi kesan kepada pembolehubah asal. Sebaliknya, lulus melalui rujukan bermakna pembolehubah tempatan menjadi alias bagi pembolehubah asal, jadi sebarang perubahan kepada pembolehubah tempatan mempengaruhi pembolehubah asal secara langsung.
Pernyataan daripada soalan, "Jika fungsi mengubah nilai itu, pengubahsuaian muncul juga dalam skop fungsi panggilan untuk kedua-dua lulus mengikut nilai dan rujukan," memerlukan penjelasan lanjut. Walaupun lulus melalui rujukan membayangkan bahawa pembolehubah tempatan dan pembolehubah asal berkongsi alamat memori yang sama, sebarang pengubahsuaian yang dibuat kepada nilai pembolehubah tempatan akan ditunjukkan dalam kedua-dua pembolehubah tempatan dan asal. Walau bagaimanapun, lulus mengikut nilai mencipta salinan data yang berasingan, jadi sebarang pengubahsuaian yang dibuat kepada pembolehubah tempatan tidak akan menjejaskan pembolehubah asal.
Terdapat perspektif berbeza tentang perkara yang membentuk rujukan lalu, yang membawa kepada potensi kekeliruan. Sesetengah mungkin merujuk kepada rujukan lulus sebagai melibatkan objek yang dirujuk, manakala yang lain mungkin menegaskan bahawa kebolehubahsuaian objek menentukan sama ada ia adalah rujukan lulus. Untuk menangani kekaburan ini, kami mencadangkan takrif berikut:
Rujukan lalu berlaku apabila parameter fungsi yang sepadan mempunyai jenis rujukan dan parameter rujukan mewujudkan pautan terus kepada ungkapan hujah. Semua senario lain mewakili nilai lulus.
Berdasarkan takrifan ini, contoh kod yang disediakan boleh dikategorikan seperti berikut:
Dengan memahami selok-belok nilai lulus dan rujukan lulus, pembangun bukan sahaja boleh menulis kod yang lebih cekap tetapi juga mengelakkan kemungkinan perangkap dan memastikan tingkah laku yang dijangkakan program mereka.
Atas ialah kandungan terperinci Lulus dengan Nilai atau Lulus Rujukan dalam C : Apakah Perbezaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!