Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Penunjuk Diluluskan sebagai Hujah dalam C , mengikut Nilai atau Rujukan?

Bagaimanakah Penunjuk Diluluskan sebagai Hujah dalam C , mengikut Nilai atau Rujukan?

Mary-Kate Olsen
Lepaskan: 2024-12-06 16:56:14
asal
1018 orang telah melayarinya

How Are Pointers Passed as Arguments in C  , by Value or by Reference?

Melalui Argumen Penunjuk: Lulus Nilai atau Lulus Rujukan dalam C

Dalam C , hujah biasanya diluluskan mengikut nilai, termasuk penunjuk. Apabila penuding diluluskan sebagai hujah, alamat objek yang ditunjuknya akan disalin ke dalam parameter fungsi. Ini bermakna bahawa sebarang perubahan yang dibuat pada penuding itu sendiri dalam fungsi tidak akan ditunjukkan di luar fungsi.

Walau bagaimanapun, perubahan yang dibuat pada objek yang ditunjuk oleh penuding akan dipantulkan, kerana objek asal diubah suai melalui rujukan penunjuk. Oleh itu, adalah boleh diterima dan prosedur standard untuk menggunakan penuding kepada penuding sebagai hujah kepada fungsi untuk mengubah suai nilai penuding dalam fungsi itu.

Sebagai contoh, pertimbangkan kod berikut:

void ModifyPointer(int **ptr) {
  *ptr = new int;
}

int main() {
  int *ptr = new int;
  ModifyPointer(&ptr);
  return 0;
}
Salin selepas log masuk

Dalam kod ini, fungsi ModifyPointer mengambil penuding ke penuding sebagai hujah. Dalam fungsi, objek int baharu diperuntukkan dan penuding yang dirujuk oleh parameter dikemas kini untuk menghala ke objek baharu.

Memandangkan penuding asal diubah suai melalui penuding ke penuding, perubahan dicerminkan dalam fungsi utama. Pembolehubah ptr kini menunjuk kepada objek int yang baru diperuntukkan.

Dalam C , lebih disukai untuk menggunakan rujukan dan bukannya penunjuk apabila boleh. Rujukan menyediakan kefungsian yang serupa kepada penunjuk tetapi dengan sintaks yang lebih bersih dan pemeriksaan jenis yang lebih kukuh.

Sebagai contoh, contoh di atas boleh ditulis semula menggunakan rujukan:

void ModifyPointer(int *&ptr) {
  ptr = new int;
}

int main() {
  int *ptr = new int;
  ModifyPointer(ptr);
  return 0;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Penunjuk Diluluskan sebagai Hujah dalam C , mengikut Nilai atau Rujukan?. 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