Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mendapatkan Saiz Tatasusunan dalam C Apabila Menggunakan Penunjuk?
Mendapatkan Saiz Tatasusunan daripada Penunjuk dalam C
Apabila bekerja dengan tatasusunan dalam C , satu tugas biasa ialah menentukan saiz atau bilangan elemen dalam tatasusunan. Walau bagaimanapun, ini boleh menjadi rumit apabila mengakses tatasusunan melalui penuding.
Isu dengan Menentukan Saiz Tatasusunan daripada Penunjuk
Pertimbangkan pengepala fungsi berikut:
int largest(int *list, int highest_index);
Fungsi ini direka untuk mengembalikan integer terbesar dalam tatasusunan integer. Masalah timbul apabila cuba menentukan bilangan elemen dalam tatasusunan 'senarai' menggunakan penuding.
Kaedah Salah
Beberapa kaedah salah yang telah dicuba termasuk:
int i = sizeof list/sizeof(int); //returns incorrect value int i = list.size(); // does not compile
Kaedah ini sama ada mengembalikan nilai yang salah atau tidak menyusun kerana mereka menganggap tatasusunan diketahui secara semula jadi dengan penunjuk.
Pendekatan Betul: Melepasi Saiz Tatasusunan sebagai Argumen
Pendekatan yang betul ialah menghantar saiz tatasusunan sebagai argumen tambahan kepada fungsi. Ini membolehkan fungsi menentukan bilangan elemen dalam tatasusunan.
Contohnya:
static const size_t ArraySize = 5; int array[ArraySize]; func(array, ArraySize);
Dalam contoh ini, fungsi 'func' mengambil penunjuk tatasusunan dan saiz tatasusunan sebagai argumen.
Rasional
C membenarkan tatasusunan mereput kepada penunjuk apabila diluluskan sebagai fungsi hujah. Walau bagaimanapun, penunjuk dengan sendirinya tidak mengandungi maklumat tentang saiz tatasusunan. Dengan menghantar saiz tatasusunan sebagai hujah, fungsi ini dapat menentukan bilangan elemen dalam tatasusunan dengan betul.
Kesimpulan
Apabila bekerja dengan tatasusunan melalui penunjuk, adalah penting untuk mempertimbangkan bahawa penunjuk tidak mempunyai maklumat yang wujud tentang saiz tatasusunan. Penyelesaiannya adalah dengan menghantar saiz tatasusunan sebagai hujah tambahan kepada fungsi yang memerlukan maklumat ini.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Saiz Tatasusunan dalam C Apabila Menggunakan Penunjuk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!