Rumah  >  Artikel  >  Apakah kaedah pelaksanaan tatasusunan dinamik dalam bahasa C?

Apakah kaedah pelaksanaan tatasusunan dinamik dalam bahasa C?

小老鼠
小老鼠asal
2024-05-02 09:51:17445semak imbas

Kaedah pelaksanaan bahasa C tatasusunan dinamik: malloc dan percuma: gunakan malloc() untuk memperuntukkan memori, realloc() untuk menukar saiz dan free() untuk melepaskan memori. Fungsi tatasusunan dalam stdlib.h: realloc() menukar saiz, calloc() mencipta dan memulakan kepada 0, reallocarray() menentukan bilangan elemen.

Apakah kaedah pelaksanaan tatasusunan dinamik dalam bahasa C?

Kaedah pelaksanaan bahasa C tatasusunan dinamik

Tatasusunan dinamik membolehkan kami melaraskan saiz tatasusunan mengikut keperluan semasa masa jalan, sekali gus mengelakkan pembaziran memori atau masalah limpahan yang dihadapi apabila menggunakan tatasusunan statik. Dalam bahasa C, terdapat dua cara utama untuk melaksanakan tatasusunan dinamik:

malloc dan percuma

malloc dan percuma adalah fungsi dalam bahasa C untuk peruntukan memori dinamik. Kita boleh menggunakan malloc() untuk memperuntukkan blok memori dan menyimpan elemen tatasusunan di dalamnya. Jika mahu, anda juga boleh menggunakan realloc() untuk menukar saiz memori yang diperuntukkan. Apabila tatasusunan tidak lagi diperlukan, free() harus digunakan untuk membebaskan memori yang diperuntukkan.

Contoh kod:

<code class="c">#include <stdlib.h>

int main() {
    // 分配一个包含 10 个整数的动态数组
    int *array = (int *)malloc(10 * sizeof(int));

    // 访问和修改数组元素
    array[0] = 1;
    array[9] = 10;

    // 使用 realloc() 增大数组大小
    array = (int *)realloc(array, 20 * sizeof(int));

    // 释放动态数组
    free(array);

    return 0;
}</code>

Fungsi tatasusunan dalam stdlib.h

Pustaka standard C juga menyediakan beberapa fungsi untuk tatasusunan dinamik:

  • realloc() boleh digunakan: Seperti yang dinyatakan di atas menukar saiz memori yang diperuntukkan.
  • calloc(): calloc() mencipta tatasusunan saiz yang ditentukan dan memulakan semua elemennya kepada 0.
  • reallocarray(): reallocarray() ialah versi khas realloc() yang membenarkan menentukan saiz tatasusunan (dalam bilangan elemen) dan bukannya bilangan bait.

Contoh kod:

<code class="c">#include <stdlib.h>

int main() {
    // 使用 calloc() 创建一个包含 10 个整数的动态数组,并将其元素初始化为 0
    int *array = (int *)calloc(10, sizeof(int));

    // 使用 reallocarray() 增大数组大小
    array = (int *)reallocarray(array, 20, sizeof(int));

    // 释放动态数组
    free(array);

    return 0;
}</code>

Atas ialah kandungan terperinci Apakah kaedah pelaksanaan tatasusunan dinamik dalam bahasa 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