Memahami Tatasusunan Bergerigi dalam C/C
Walaupun konsep tatasusunan bergerigi, di mana baris boleh mempunyai panjang yang berbeza-beza, tidak disokong secara langsung dalam C/C standard , terdapat teknik untuk mencapai kefungsian yang serupa.
Apabila cuba mengisytiharkan tatasusunan bergerigi dalam C/C seperti yang ditunjukkan di bawah:
<code class="c++">int jagged[][] = { {0,1}, {1,2,3} };</code>
ralat pengkompil keluar, menyerlahkan keperluan untuk menentukan sempadan untuk semua dimensi kecuali yang pertama. Untuk mengatasi had ini, pendekatan alternatif adalah menggunakan tatasusunan penunjuk.
Mencipta Tatasusunan Bergerigi Menggunakan Tatasusunan Penunjuk
Dalam C, tatasusunan bergerigi boleh dilaksanakan menggunakan susunan penunjuk. Setiap elemen tatasusunan ini menunjuk kepada subarray yang diperuntukkan secara dinamik, di mana setiap subarray mempunyai panjangnya yang berbeza-beza.
Contohnya:
<code class="c">int *jagged[5]; // Assign memory to each subarray jagged[0] = malloc(sizeof(int) * 10); jagged[1] = malloc(sizeof(int) * 3); // Accessing elements *jagged[0] = 0; *(jagged[0] + 1) = 1; *jagged[1] = 1; *(jagged[1] + 1) = 2; *(jagged[1] + 2) = 3; // Free memory after use free(jagged[0]); free(jagged[1]);</code>
Kaedah ini membenarkan penciptaan tatasusunan dengan baris saiz yang berbeza-beza, mensimulasikan tingkah laku tatasusunan bergerigi. Adalah penting untuk ambil perhatian bahawa memori untuk setiap subarray mesti diperuntukkan secara dinamik dan dibebaskan secara manual untuk mengelakkan kebocoran memori.
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Melaksanakan Tatasusunan Bergerigi dalam C/C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!