Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menentukan Saiz Tatasusunan yang Dilalui sebagai Argumen Fungsi dalam C?

Bagaimanakah Saya Boleh Menentukan Saiz Tatasusunan yang Dilalui sebagai Argumen Fungsi dalam C?

DDD
Lepaskan: 2024-12-20 15:41:13
asal
758 orang telah melayarinya

How Can I Determine the Size of an Array Passed as a Function Argument in C  ?

Menentukan Saiz Tatasusunan Apabila Diluluskan sebagai Argumen Fungsi

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.

Pendekatan C Menggunakan Templat

Penyelesaian yang berkesan dalam C melibatkan memanfaatkan templat dan menghantar tatasusunan melalui rujukan:

template <typename T, int N>
void func(T (&amp;a)[N]) {
    for (int i = 0; i < N; ++i) a[i] = T(); // reset all elements
}
Salin selepas log masuk

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);
Salin selepas log masuk

Pertimbangan

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan