Memahami saiz tatasusunan semasa menghantarnya ke fungsi lain tanpa menyatakan saiznya secara jelas boleh menjadi cabaran dalam C . Soalan ini timbul daripada keperluan untuk melaksanakan gelung dalam fungsi yang menerima tatasusunan sebagai hujah.
Pendekatan awal, menggunakan semakan bersyarat untuk nilai penunjuk NULL, terbukti tidak mencukupi kerana potensi kehadiran nilai yang tidak dijangka dalam tatasusunan.
Penyelesaian yang berkesan dalam C melibatkan memanfaatkan templat dan menghantar tatasusunan melalui rujukan:
template <typename T, int N> void func(T (&a)[N]) { for (int i = 0; i < N; ++i) a[i] = T(); // reset all elements }
Dengan menentukan saiz tatasusunan N sebagai parameter templat, fungsi mengetahui saiz tatasusunan yang tepat ia berfungsi. Pendekatan ini memastikan gelung berulang mengikut bilangan elemen yang dimaksudkan.
Untuk menggunakan fungsi templat ini, tatasusunan boleh dihantar seperti berikut:
int x[10]; func(x);
Ia penting untuk ambil perhatian bahawa pendekatan ini hanya berfungsi untuk tatasusunan, bukan penunjuk. Untuk penyelesaian yang lebih serba boleh, menggunakan bekas perpustakaan standard seperti std::vector mungkin merupakan pilihan yang lebih baik.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Saiz Tatasusunan yang Dilalui sebagai Argumen Fungsi dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!