Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Saya Boleh Mencipta Tatasusunan Bergerigi dalam C/C?
Jagged Array dalam C/C
Walaupun serba boleh, bahasa pengaturcaraan C/C tidak menyokong konsep tatasusunan bergerigi secara asli, yang merujuk kepada tatasusunan dengan subarray panjang berubah-ubah.
Pernyataan Masalah:
Apabila cuba mentakrif tatasusunan bergerigi dalam C/C menggunakan sintaks berikut:
int jagged[][] = { {0,1}, {1,2,3} };
pembangun menghadapi ralat kompilasi berikut:
error: declaration of `jagged' as multidimensional array must have bounds for all dimensions except the first
Penyelesaian:
Untuk mengatasi had ini, pembangun C biasanya menggunakan pelbagai penunjuk . Pendekatan ini melibatkan mencipta tatasusunan yang menyimpan penunjuk kepada subarray dengan panjang yang berbeza-beza. Contohnya:
<code class="c">int *jagged[5]; jagged[0] = malloc(sizeof(int) * 10); jagged[1] = malloc(sizeof(int) * 3);</code>
Dalam contoh ini, tatasusunan bergerigi mengandungi penuding kepada dua subarray: bergerigi[0] menghala ke subarray dengan 10 elemen, manakala bergerigi[1] menghala ke subarray dengan 3 elemen. Setiap subarray diperuntukkan secara dinamik menggunakan fungsi malloc.
Dengan menggunakan tatasusunan penuding, pembangun boleh meniru tatasusunan bergerigi dalam C/C dengan berkesan. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa pendekatan ini memerlukan pengurusan ingatan yang teliti dan manipulasi penunjuk.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Tatasusunan Bergerigi dalam C/C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!