Rumah > pembangunan bahagian belakang > C++ > Adakah Parameter Penunjuk dan Rujukan Sama Fungsinya dalam C?

Adakah Parameter Penunjuk dan Rujukan Sama Fungsinya dalam C?

Mary-Kate Olsen
Lepaskan: 2024-11-03 02:13:29
asal
757 orang telah melayarinya

Are Pointer and Reference Parameters Functionally Identical in C  ?

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:

  • Rujukan tidak boleh diberikan NULL.
  • Alamat penuding menghasilkan alamat pembolehubah penunjuk, manakala alamat rujukan menghasilkan alamat pembolehubah yang dirujuk.
  • Rujukan tidak boleh ditetapkan semula setelah dimulakan.

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!

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