Rumah > pembangunan bahagian belakang > C++ > Adakah Tatasusunan Panjang Pembolehubah (VLA) Dibenarkan dalam Skop Global dan Setempat dalam C dan C ?

Adakah Tatasusunan Panjang Pembolehubah (VLA) Dibenarkan dalam Skop Global dan Setempat dalam C dan C ?

Susan Sarandon
Lepaskan: 2024-12-02 05:45:15
asal
468 orang telah melayarinya

Are Variable Length Arrays (VLAs) Allowed in Global and Local Scopes in C and C  ?

Variable Length Arrays (VLA) dalam C dan C

Anda bertanya tentang tingkah laku dan sekatan yang mengelilingi tatasusunan panjang berubah (VLA) dalam C dan C .

Turutan Panjang Boleh Ubah dalam Setempat Skop

Pemahaman anda adalah tepat. Dalam C99, VLA boleh diisytiharkan dalam skop tempatan, seperti yang ditunjukkan dalam contoh anda:

int main(int argc, char **argv) {
    int size = 100;
    int array[size];
    return 0;
}
Salin selepas log masuk

Turutan Panjang Boleh Ubah dalam Skop Global

Walau bagaimanapun, VLA sememangnya dilarang dalam skop global dalam C99. Khususnya:

const int global_size = 100;
int global_array[global_size]; // forbidden in C99, allowed in C++
Salin selepas log masuk

Sebab sekatan ini terletak pada fakta bahawa, memandangkan objek yang layak const tidak dianggap sebagai ungkapan pemalar integer dalam C, pengkompil tidak boleh menentukan saiz VLA pada masa penyusunan. Oleh itu, pengisytiharan VLA sedemikian dalam skop global adalah dilarang.

Perbezaan dalam Tingkah Laku

Tingkah laku ini berbeza daripada tatasusunan dalam skop global dan tempatan kerana tatasusunan global mempunyai saiznya ditentukan pada masa penyusunan, manakala saiz VLA dalam skop tempatan boleh dikira secara dinamik berdasarkan nilai pembolehubah semasa masa jalan.

Kekurangan Sokongan VLA dalam C

Tidak seperti C99, C tidak membenarkan penggunaan VLA. Sebaliknya, C menyediakan ciri seperti peruntukan memori dinamik dan kelas kontena seperti vektor dan tatasusunan, yang memenuhi pelbagai saiz tatasusunan.

Kesimpulannya, pemahaman anda tentang tingkah laku dan sekatan yang mengelilingi VLA dalam C dan C adalah betul. VLA dibenarkan dalam skop tempatan tetapi tidak dalam skop global dalam C99 dan tidak disokong dalam C . Sekatan ini berpunca daripada keperluan untuk menentukan saiz VLA pada masa penyusunan, yang tidak selalu boleh dilakukan dengan pembolehubah global.

Atas ialah kandungan terperinci Adakah Tatasusunan Panjang Pembolehubah (VLA) Dibenarkan dalam Skop Global dan Setempat dalam C dan C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan