Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengisytiharkan Tatasusunan Bersaiz Masa Larian dalam C tanpa Peruntukan Memori Dinamik?

Bagaimanakah Saya Boleh Mengisytiharkan Tatasusunan Bersaiz Masa Larian dalam C tanpa Peruntukan Memori Dinamik?

DDD
Lepaskan: 2024-12-20 14:08:17
asal
675 orang telah melayarinya

How Can I Declare a Run-Time Sized Array in C   without Dynamic Memory Allocation?

Saiz Tatasusunan pada Masa Jalanan tanpa Peruntukan Dinamik: Inovasi C99

Dalam C , tanggapan untuk mengisytiharkan tatasusunan dengan saiz yang ditentukan pada masa jalankan sering menimbulkan kebimbangan . Walau bagaimanapun, pertemuan baru-baru ini dengan coretan kod pelik telah mencetuskan persoalan: bagaimanakah tatasusunan boleh diisytiharkan tanpa peruntukan dinamik, namun saiznya ditentukan pada masa jalan?

Pertimbangkan kod C berikut:

int main(int argc, char **argv)
{
    size_t size;
    cin >> size;
    int array[size];
    for (size_t i = 0; i < size; i++)
    {
        array[i] = i;
        cout << i << endl;
    }

    return 0;
}
Salin selepas log masuk

Penyusun seperti GCC telah menggunakan ciri daripada C99 yang membenarkan tatasusunan bersaiz berubah-ubah. Ciri inovatif ini membolehkan tatasusunan diisytiharkan pada tindanan dengan saiz yang boleh ditentukan semasa pelaksanaan. Walau bagaimanapun, tidak seperti peruntukan dinamik dengan baharu atau malloc, tatasusunan bersaiz pembolehubah memperuntukkan memori pada tindanan, sama seperti mengisytiharkan tatasusunan dengan saiz tetap.

Tatasusunan bersaiz pembolehubah menawarkan kelebihan prestasi berbanding peruntukan dinamik kerana ia mengelakkan overhed pengurusan ingatan timbunan. Dengan memperuntukkan memori pada tindanan, tatasusunan ini mengurangkan kemungkinan pemecahan memori dan meningkatkan prestasi program.

Adalah penting untuk menekankan bahawa ciri ini adalah unik kepada C99 dan tidak disokong dalam versi lama bahasa C. Oleh itu, jika anda menemui kod yang bergantung pada tatasusunan bersaiz berubah-ubah, pastikan anda menyusunnya dengan pengkompil yang mematuhi C99 untuk mengelakkan ralat saiz storan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengisytiharkan Tatasusunan Bersaiz Masa Larian dalam C tanpa Peruntukan Memori Dinamik?. 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