Bolehkah Anda Mengisytiharkan Tatasusunan dengan Saiz Pembolehubah dalam C?

DDD
Lepaskan: 2024-11-01 22:11:29
asal
470 orang telah melayarinya

Can You Declare an Array with a Variable Size in C  ?

Pengisytiharan Saiz Tatasusunan Pembolehubah dalam C

Dalam C , saiz tatasusunan biasanya dijangkakan sebagai nilai integer malar. Walau bagaimanapun, persoalan timbul sama ada boleh mengisytiharkan tatasusunan dengan pembolehubah bukan malar sebagai saiznya.

Seperti yang diserlahkan oleh Bjarne Stroustrup dalam Bahasa Pengaturcaraan C, "terikat tatasusunan, mestilah ungkapan malar." Akibatnya, kod di bawah dianggap tidak betul:

<code class="cpp">int ArraySize = 5;
int MyArray[ArraySize]; // incorrect</code>
Salin selepas log masuk

Walau bagaimanapun, yang menghairankan, pada sesetengah sistem seperti GCC v4.4.0, kod tersebut berjaya disusun:

<code class="cpp">void f(int i) {
    int v2[i];
}

int main() {
    int i = 3;
    int v1[i];
    f(5);
}</code>
Salin selepas log masuk

Tingkah laku yang tidak dijangka ini adalah disebabkan oleh sambungan GCC kepada standard. Secara lalai, GCC membenarkan penggunaan pembolehubah tidak tetap sebagai saiz tatasusunan. Walau bagaimanapun, ini mungkin bukan ciri yang disokong merentas semua pengkompil atau platform.

Jika mudah alih adalah keperluan, sangat disyorkan untuk menggunakan pilihan -pedantic dengan GCC untuk mendayakan amaran untuk sambungan ini atau gunakan -std=c 98 untuk menimbulkan ralat. Dengan mematuhi standard, kod akan menjadi lebih dipercayai dan serasi merentas platform.

Atas ialah kandungan terperinci Bolehkah Anda Mengisytiharkan Tatasusunan dengan Saiz Pembolehubah dalam 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan