C语言中的可变长数组(也称为动态数组)可以通过重新分配和复制数组的方式来扩容。具体步骤如下:
下面是一个简单的示例代码,展示如何扩容一个动态数组:
#include <stdio.h>
#include <stdlib.h>
int main() {
int initialCapacity = 5;
int *arr = (int *)malloc(sizeof(int) * initialCapacity);
int size = 0;
int capacity = initialCapacity;
// 添加元素到数组中
for (int i = 0; i < 10; i++) {
if (size == capacity) {
capacity *= 2;
arr = (int *)realloc(arr, sizeof(int) * capacity);
}
arr[size] = i;
size++;
}
// 输出数组中的元素
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
// 释放内存
free(arr);
return 0;
}
在上面的代码中,当数组的大小达到容量时,我们通过realloc函数重新分配内存空间,将容量扩大为原来的两倍。然后将新的元素添加到数组中,直到所有元素都添加完毕。最后,记得释放动态数组的内存空间。