Bootstrap

C语言基础:动态数组

1 动态数组

在 C 语言中,动态数组是一种在运行时动态分配内存的数组,其大小可以在程序执行过程中根据需要进行调整。C 语言本身并没有直接提供动态数组的语法,但可以通过使用指针和内存管理函数来实现动态分配和释放内存空间,从而实现动态数组的功能。

1.1 动态数组的实现

要实现动态数组,可以按照以下步骤操作:

  1. 动态内存分配:使用 malloc() 函数在堆(heap)中动态分配内存空间。
  2. 访问和使用动态数组:通过指针操作动态分配的内存空间,实现数组的访问和操作。
  3. 释放内存:使用 free() 函数释放动态分配的内存,避免内存泄漏。

1.2 示例:动态分配和使用整数数组

下面是一个示例,演示如何动态分配和使用整数数组:

#include <stdio.h>
#include <stdlib.h> // 包含 malloc 和 free 函数

int main() 
{
    int n; 
    printf("Enter the size of the array: ");
    scanf("%d", &n);
    // 动态分配内存空间
    int *arr = (int *)malloc(n * sizeof(int));
    if (arr == NULL) 
    {
        printf("Memory allocation failed.\n");
        return 1;
    }
    // 向动态数组中存储数据
    printf("Enter %d integers:\n", n);
    for (int i = 0; i < n; i++) 
        scanf("%d", &arr[i]);
    // 打印动态数组中的数据
    printf("Array elements: ");
    for (int i = 0; i < n; i++) 
        printf("%d ", arr[i]);
    printf("\n");
    // 释放动态分配的内存空间
    free(arr);
    return 0;
}

1.3 注意事项

  • 内存泄漏:一定要记得使用 free() 函数释放动态分配的内存,否则会导致内存泄漏问题。
  • 指针安全:使用动态数组时,确保指针指向有效的内存空间,避免访问未初始化或已释放的内存。
  • 错误处理:对 malloc() 返回的指针进行空指针检查,以处理内存分配失败的情况。
  • 内存访问:避免越界访问动态数组,确保在分配的范围内操作数组元素。
;