Parameter Penunjuk lwn. Rujukan: Kesetaraan Fungsian dan Perbezaan Halus
Dalam C , penunjuk dan rujukan kedua-duanya digunakan sebagai parameter kepada fungsi, tetapi mereka berbeza dalam tingkah laku dan semantik mereka. Mari kita selidiki perbezaan utama antara dua jenis parameter ini.
Adakah foo() dan foo() Setara?
Coretan di bawah menunjukkan dua fungsi dengan jenis parameter yang berbeza :
<code class="cpp">int foo(bar* p) { return p->someInt(); } int foo(bar& r) { return r.someInt(); }</code>
Secara fungsional, kedua-dua fungsi ini adalah setara jika syarat berikut dipenuhi:
Sebabnya ialah kedua-dua penunjuk dan parameter rujukan menyediakan akses terus ke lokasi memori yang sama. Dalam kes ini, perbezaan dalam sintaks akses (., ->) adalah tidak ketara.
Tugasan melalui Penunjuk dan Rujukan
Barisan di bawah menunjukkan operasi tugasan yang melibatkan penunjuk dan rujukan:
<code class="cpp">bar& ref = *ptr_to_bar;</code>
Tugasan ini tidak melibatkan sebarang penghirisan atau kehilangan data. Ia memberikan nilai objek yang ditunjuk oleh ptr_to_bar kepada rujukan rujukan.
Perbezaan Halus Melangkaui Fungsi
Walaupun penunjuk dan rujukan mempunyai kefungsian yang setara dalam contoh di atas, terdapat perbezaan yang ketara untuk diambil perhatian:
Atas ialah kandungan terperinci Petunjuk lwn Rujukan dalam Fungsi C: Kesetaraan Fungsian atau Perbezaan Halus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!