Home  >  Article  >  What are the implementation methods of dynamic array in C language?

What are the implementation methods of dynamic array in C language?

小老鼠
小老鼠Original
2024-05-02 09:51:17444browse

Dynamic array C language implementation method: malloc and free: use malloc() to allocate memory, realloc() to change the size, and free() to release memory. Array functions in stdlib.h: realloc() changes the size, calloc() creates and initializes to 0, reallocarray() specifies the number of elements.

What are the implementation methods of dynamic array in C language?

Dynamic array C language implementation method

Dynamic array allows us to adjust the array size as needed at runtime, thereby avoiding the problems encountered when using static arrays memory waste or overflow issues. In C language, there are two main ways to implement dynamic arrays:

malloc and free

malloc and free are functions in C language for dynamic memory allocation. We can use malloc() to allocate a block of memory and store the array elements in it. If desired, you can also use realloc() to change the allocated memory size. When the array is no longer needed, free() should be used to free the allocated memory.

Sample code:

<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>

Array functions in stdlib.h

The C standard library also provides several functions for dynamic arrays :

  • realloc(): As mentioned above, realloc() can be used to change the allocated memory size.
  • calloc(): calloc() creates an array of the specified size and initializes all its elements to 0.
  • reallocarray(): reallocarray() is a special version of realloc() that allows specifying the size of the array (in number of elements) instead of the number of bytes.

Sample code:

<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>

The above is the detailed content of What are the implementation methods of dynamic array in C language?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn