Rumah >pembangunan bahagian belakang >C++ >Adakah Tatasusunan Panjang Pembolehubah (VLA) Wujud dalam C ?

Adakah Tatasusunan Panjang Pembolehubah (VLA) Wujud dalam C ?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-16 13:11:03783semak imbas

Do Variable Length Arrays (VLAs) Exist in C  ?

Tatasusunan Panjang Boleh Ubah dalam C

Walaupun andaian umum bahawa C tidak menyokong tatasusunan panjang boleh ubah (VLA), terdapat cara untuk mencapai fungsi yang serupa. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa menggunakan kaedah ini tidak dijamin keserasian merentas semua penyusun.

Penjelasan Kod

Kod contoh yang anda berikan akan disusun dan berfungsi kerana:

  • Keserasian GCC: GCC versi 4.7 dan sokongan yang lebih baru VLA sebagai sambungan. Ini bermakna apabila kod anda disusun dengan GCC, ia mentafsir int a[n]; sebagai VLA.
  • Peruntukan Storan Automatik: VLA disimpan pada tindanan, iaitu sejenis memori yang diperuntukkan secara automatik pada permulaan fungsi. Jadi, dalam kod anda, a diperuntukkan pada tindanan berdasarkan nilai n yang dimasukkan oleh pengguna.

Sokongan Standard

Adalah penting untuk ambil perhatian bahawa piawaian C tidak memerlukan penyusun untuk menyokong VLA. Oleh itu, kod yang menggunakan VLA mungkin tidak mudah alih merentas pengkompil atau platform yang berbeza.

Cadangan Gagal untuk C 14 dan C 17

Adalah pada mulanya dicadangkan bahawa VLA akan termasuk dalam piawaian C 14. Walau bagaimanapun, cadangan itu tidak lulus proses pengundian, dan VLA tidak ditambahkan pada bahasa tersebut. Cadangan itu juga gagal diterima untuk dimasukkan dalam C 17.

Kesimpulan

Walaupun VLA secara rasmi bukan sebahagian daripada standard C, ia boleh digunakan sebagai lanjutan dalam penyusun tertentu, seperti GCC. Walau bagaimanapun, adalah penting untuk mengetahui potensi isu mudah alih dan menggunakan VLA dengan berhati-hati, terutamanya dalam kod merentas platform.

Atas ialah kandungan terperinci Adakah Tatasusunan Panjang Pembolehubah (VLA) Wujud 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