Mendapatkan Saiz Tatasusunan daripada Penunjuk dalam C
Dalam C , menentukan saiz tatasusunan yang diluluskan sebagai penuding boleh menjadi mencabar. Tatasusunan mempamerkan "kesetaraan tatasusunan/penunjuk", di mana tatasusunan boleh mereput kepada penuding apabila diluluskan sebagai hujah fungsi. Ini menimbulkan masalah untuk menentukan saiz tatasusunan dengan tepat.
Untuk mengatasi isu ini, kita tidak boleh bergantung pada sizeof() kerana ia mengembalikan saiz penuding, yang biasanya 4 atau 8 bait, bukan bilangan elemen dalam tatasusunan. Sebaliknya, kita mesti menghantar saiz tatasusunan secara eksplisit sebagai hujah tambahan.
Penyelesaian:
Ubah suai pengepala fungsi untuk memasukkan parameter bagi saiz tatasusunan:
int largest(int *list, size_t size)
Lepasi saiz tatasusunan bersama-sama dengan penunjuk ke fungsi:
static const size_t ArraySize = 5; int array[ArraySize]; int result = largest(array, ArraySize);
Dengan menghantar saiz secara eksplisit, fungsi boleh menentukan bilangan elemen dalam tatasusunan dengan sewajarnya.
Pendekatan Alternatif:
Jika kita hanya mempunyai penunjuk kepada tatasusunan dan bukan pembolehubah tatasusunan asal, kita boleh mengira saiz menggunakan yang berikut formula:
size = sizeof(pointer_variable) / sizeof(array_element_type)
Sebagai contoh, jika kita mempunyai penunjuk int *ptr kepada tatasusunan integer dengan saiz yang tidak diketahui, kita boleh menentukan saiz seperti berikut:
size = sizeof(ptr) / sizeof(int);
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Saiz Tatasusunan yang Diluluskan sebagai Penunjuk dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!