21xrx.com
2024-12-23 02:44:57 Monday
登录
文章检索 我的文章 写文章
C语言中如何实现可变数组
2023-06-15 18:52:24 深夜i     --     --
C语言 动态内存分配 malloc realloc

在C语言中,我们常常需要使用数组来存储一系列的数据。但是,由于数组的长度在定义时就已经确定,导致很难适应不同大小的数据集合。为了解决这个问题,C语言也提供了可变数组的方式。

实现可变数组的核心思想是使用动态内存分配函数malloc和realloc,这两个函数可以根据需要在堆上分配相应的内存。同时,我们需要使用指针来管理分配的内存。

下面是一个简单的示例代码:


#include

#include

int main() {

  int n;

  printf("请输入需要存储的数据个数:");

  scanf("%d", &n);

  int *arr = (int *)malloc(sizeof(int) * n); // 动态分配n个int类型的内存

  for (int i = 0; i < n; i++) {

    printf("请输入第%d个数据:", i + 1);

    scanf("%d", &arr[i]);

  }

  // 可以使用arr来访问已经存储的数据

  for (int i = 0; i < n; i++) {

    printf("%d ", arr[i]);

  }

  // 假设现在需要扩展数组的长度

  int m;

  printf("\n请输入需要新增的数据个数:");

  scanf("%d", &m);

  arr = (int *)realloc(arr, sizeof(int) * (n + m)); // 重新分配n+m个int类型的内存

  for (int i = n; i < n + m; i++) {

    printf("请输入第%d个新增数据:", i + 1);

    scanf("%d", &arr[i]);

  }

  // 调整后的数组可以直接使用arr访问

  for (int i = 0; i < n + m; i++) {

    printf("%d ", arr[i]);

  }

  free(arr); // 释放分配的内存

  return 0;

}

通过上述代码,我们可以看到可变数组的使用方式。同时,需要注意的是,在使用完动态分配的内存后,要及时调用free函数来释放这些内存,以避免出现内存泄漏等问题。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复