Rumah > pembangunan bahagian belakang > C++ > Petunjuk dalam C : Lulus Mengikut Nilai lwn. Lulus Rujukan—Yang Perlu Saya Gunakan?

Petunjuk dalam C : Lulus Mengikut Nilai lwn. Lulus Rujukan—Yang Perlu Saya Gunakan?

Barbara Streisand
Lepaskan: 2024-12-30 09:53:09
asal
522 orang telah melayarinya

Pointers in C  : Pass by Value vs. Pass by Reference—Which Should I Use?

Melalui Penunjuk mengikut Nilai berbanding Rujukan

Apabila menghantar penunjuk kepada fungsi, adalah penting untuk memahami perbezaan antara lulus dengan nilai dan melalui rujukan.

Dalam contoh yang disediakan, fungsi clickOnBubble cuba untuk menetapkan nilai targetBubble ke penunjuk yang disimpan dalam vektor buih. Walau bagaimanapun, fungsi ini hanya menghantar salinan targetBubble kepada fungsi, jadi sebarang perubahan yang dibuat pada salinan dalam fungsi tidak akan ditunjukkan dalam penuding asal.

Melalui Rujukan dengan Penunjuk-ke -Penunjuk

Untuk menukar penunjuk asal, ia perlu lulus melalui rujukan. Ini boleh dilakukan menggunakan penuding ke penuding, seperti yang ditunjukkan dalam kod berikut:

void foo(int **ptr) {
    *ptr = new int[10]; // Just for example, use RAII in a real-world application
}
Salin selepas log masuk

Dalam contoh ini, ptr ialah penuding kepada penuding. Apabila fungsi dipanggil, alamat targetBubble dihantar ke fungsi. Fungsi itu kemudiannya boleh menggunakan pengendali arah berganda (**) untuk mengakses dan mengubah suai penunjuk targetBubble asal.

Melalui Rujukan dengan Rujukan-ke-Tuding

Satu lagi cara untuk menghantar penunjuk melalui rujukan adalah dengan menggunakan rujukan-ke-penunjuk, seperti yang ditunjukkan dalam yang berikut kod:

void bar(int *&ptr) {
    ptr = new int[10];
}
Salin selepas log masuk

Di sini, ptr ialah rujukan kepada penunjuk. Apabila fungsi dipanggil, rujukan terikat kepada targetBubble. Fungsi itu kemudiannya boleh mengubah suai targetBubble terus melalui rujukan.

Atas ialah kandungan terperinci Petunjuk dalam C : Lulus Mengikut Nilai lwn. Lulus Rujukan—Yang Perlu Saya Gunakan?. 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