Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melewati Tatasusunan dengan Rujukan dengan Betul dalam C?

Bagaimana untuk Melewati Tatasusunan dengan Rujukan dengan Betul dalam C?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-26 22:14:10766semak imbas

How to Correctly Pass Arrays by Reference in C  ?

Melalui Tatasusunan melalui Rujukan dalam C

Dalam C , menghantar tatasusunan sebagai argumen fungsi melalui rujukan lazimnya diterima untuk memastikan sebarang pengubahsuaian yang dibuat kepada tatasusunan dalam fungsi ditunjukkan dalam kod panggilan. Walau bagaimanapun, ralat pengkompil baru-baru ini telah menimbulkan keraguan tentang amalan ini.

Mengapa "void foo(double& bar)" tidak dibenarkan?

Sintaks "void foo( double& bar)" cuba menghantar rujukan tatasusunan berganda kepada fungsi foo. Walau bagaimanapun, C tidak menyokong pendekatan ini. Tatasusunan terutamanya diluluskan melalui rujukan, bukan oleh elemen individu itu sendiri.

Cara yang Betul untuk Melepasi Tatasusunan melalui Rujukan

Untuk menghantar tatasusunan dengan rujukan dengan betul, gunakan sintaks berikut:

void foo(double (&bar)[10]);

Dalam contoh ini, "bar" mewakili tatasusunan beregu dengan 10 elemen yang dilalui rujukan. Ini memastikan bahawa sebarang perubahan yang dibuat pada "bar" dalam foo juga akan berlaku dalam kod panggilan.

Penyelesaian Alternatif

Melalui tatasusunan melalui rujukan selalunya diutamakan untuk dielakkan isu penyalinan dan prestasi yang tidak perlu. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa tatasusunan perlu saiz tetap apabila diluluskan dengan rujukan. Jika anda memerlukan tatasusunan saiz arbitrari, pertimbangkan alternatif berikut:

  • std::vector: Gunakan vektor untuk menyimpan elemen dalam tatasusunan fleksibel. Ini membolehkan saiz semula dinamik dan menjadikan kod kurang terdedah kepada ralat.
  • std::array (C 11 dan kemudian): Sama seperti vektor, std::array menyediakan tetap- susunan saiz. Walau bagaimanapun, ia menawarkan ciri tambahan seperti akses memori terus dan boleh disalin dengan cekap.

Atas ialah kandungan terperinci Bagaimana untuk Melewati Tatasusunan dengan Rujukan dengan Betul dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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