Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menentukan Saiz Tatasusunan yang Dilalui kepada Fungsi C dengan Boleh Dipercayai?

Bagaimanakah Saya Boleh Menentukan Saiz Tatasusunan yang Dilalui kepada Fungsi C dengan Boleh Dipercayai?

Susan Sarandon
Lepaskan: 2024-12-30 02:53:28
asal
799 orang telah melayarinya

How Can I Reliably Determine the Size of an Array Passed to a C   Function?

Menentukan Saiz Tatasusunan dalam Fungsi Lulus

Masalah timbul dalam C , di mana menentukan saiz tatasusunan yang dihantar kepada fungsi menimbulkan cabaran disebabkan oleh ketidakupayaan saiz untuk menangkap panjang tatasusunan dengan tepat.

Satu penyelesaian popular mencadangkan penamatan gelung apabila tatasusunan elemen tatasusunan[i] mencapai NULL. Walau bagaimanapun, pendekatan ini boleh membawa kepada ralat, kerana tatasusunan[i] kadangkala mengandungi nilai sampah rawak berhampiran penghujung tatasusunan.

Penyelesaian Berasaskan Templat dengan Rujukan Tatasusunan

C menawarkan penyelesaian yang lebih dipercayai melalui templat dan rujukan tatasusunan:

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

Fungsi berasaskan templat ini mengambil tatasusunan jenis T dengan saiz tetap N. Dengan menggunakan operator rujukan &, ia mengikat tatasusunan asal kepada a, membenarkan akses kepada elemen tatasusunan tanpa menghantar saiz secara eksplisit.

Untuk menggunakan fungsi ini, hanya isytiharkan tatasusunan dan hantarkannya melalui rujukan:

int x[10];
func(x);
Salin selepas log masuk

Adalah penting untuk ambil perhatian bahawa penyelesaian ini hanya terpakai kepada tatasusunan, bukan petunjuk. Untuk tatasusunan berasaskan penunjuk, pilihan yang lebih baik ialah menggunakan bekas Pustaka Templat Standard (STL) std::vector, yang menyediakan saiz dan keupayaan akses elemen.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Saiz Tatasusunan yang Dilalui kepada Fungsi C dengan Boleh Dipercayai?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan