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