Rumah >pembangunan bahagian belakang >C++ >Bagaimana Anda Menentukan Saiz Tatasusunan yang Dilalui kepada Fungsi C?
Menentukan Saiz Tatasusunan Apabila Melewati Fungsi dalam C
Tidak seperti dalam fungsi utama, di mana sizeof() mengembalikan saiz tatasusunan secara langsung , menghantar tatasusunan kepada fungsi memerlukan pertimbangan kerana pereputan tatasusunan kepada penuding.
Reput Tatasusunan kepada Penunjuk
Apabila diluluskan sebagai hujah, tatasusunan mereput kepada penunjuk kepada penunjuknya unsur pertama. Ini bermakna ungkapan sizeof(some_list) dalam fungsi akan memberikan saiz penuding, bukan saiz keseluruhan tatasusunan.
Masalah Nisbah Saiz
Menggunakan ungkapan (sizeof(some_list)/sizeof(*some_list)) untuk mengira saiz tatasusunan tidak berfungsi kerana:
Nisbah ini sentiasa menghasilkan 1 , tanpa mengira saiz tatasusunan. Oleh itu, fungsi length_of_array sentiasa mengembalikan 1.
Kaedah Alternatif Menggunakan Templat
Untuk menentukan saiz tatasusunan dengan tepat apabila dihantar ke fungsi, gunakan templat:
template<size_t N> int length_of_array(int (&arr)[N]) { return N; }
Pendekatan ini menggunakan parameter templat N untuk menentukan saiz tatasusunan, yang kemudiannya dikembalikan oleh fungsi.
Atas ialah kandungan terperinci Bagaimana Anda Menentukan Saiz Tatasusunan yang Dilalui kepada Fungsi C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!