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

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

Barbara Streisand
Barbara Streisandasal
2024-12-04 06:42:121062semak imbas

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

Menentukan Saiz Tatasusunan dengan Penunjuk

Dalam C , apabila tatasusunan merosot kepada penuding, mengambil saiz tatasusunan daripada penuding boleh mencabar.

Masalah

Mencari saiz tatasusunan yang diluluskan sebagai penunjuk memerlukan tambahan maklumat, kerana penunjuk itu sendiri tidak mengandungi data ini.

Penyelesaian

Untuk menyelesaikan isu ini, dua pendekatan tersedia:

  1. Melepasi Maklumat Saiz sebagai Hujah: Hantar saiz tatasusunan sebagai parameter tambahan kepada fungsi. Contohnya:

    func(int* array, size_t arraySize);
  2. Menggunakan Sintaks Tatasusunan: Jika saiz tatasusunan diketahui terlebih dahulu, menghantarnya sebagai tatasusunan bersaiz tetap mencapai kesan yang sama:

    func(int array[5]);

Penjelasan

The peraturan pereputan penunjuk membenarkan tatasusunan berkelakuan seperti penunjuk, tetapi ini tidak membayangkan bahawa ia sememangnya penunjuk. Ia hanya mereput kepada penunjuk apabila diluluskan sebagai argumen fungsi.

Untuk menentukan saiz tatasusunan daripada penunjuk, maklumat saiz tambahan mesti disediakan. Ini boleh dicapai dengan menghantar saiz secara eksplisit sebagai hujah atau menggunakan sintaks tatasusunan, yang merangkumi maklumat saiz dalam pengisytiharan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Saiz Tatasusunan yang Dilalui sebagai Penunjuk dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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