Parameter Penunjuk lwn. Rujukan: Peperiksaan Terperinci
Soalan:
Lakukan parameter penunjuk (cth., int foo(bar* p) { ... }) dan parameter rujukan (cth., int foo(bar& r) { ... }) berkelakuan sama dalam C ?
Jawapan:
Perbezaan antara penunjuk dan rujukan melangkaui butiran pelaksanaannya dalam standard. Rujukan merangkumi konsep gula sintaksis, pada asasnya mencipta alias untuk pembolehubah. Ini membolehkan pengkompil mengoptimumkan kod di mana penuding sebaliknya akan menambah kerumitan.
Kesamaan Fungsian:
Dengan mengandaikan tiada kebimbangan penuding nol, fungsi foo(bar* p) dan foo (bar& r) pada asasnya adalah setara jika kaedah someInt() bukan maya. Kedua-dua fungsi mengakses terus fungsi ahli objek melalui parameter. Jika someInt() adalah maya, walau bagaimanapun, fungsi parameter berasaskan rujukan (foo(bar& r)) akan menggunakan kaedah yang betul berdasarkan jenis objek sebenar, manakala fungsi berasaskan penunjuk (foo(bar* p)) akan sentiasa gunakan kaedah kelas asas.
Menetapkan kepada Rujukan:
Bar tugasan& ref = *ptr_to_bar tidak akan menyebabkan sebarang penghirisan. Rujukan rujukan akan alias objek yang ditunjuk oleh ptr_to_bar, membolehkan anda mengakses ahlinya secara langsung.
Perbezaan Tambahan:
Atas ialah kandungan terperinci Adakah Parameter Penunjuk dan Rujukan Sama Fungsinya dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!