要创建一个可变大小的数组,可以使用动态内存分配函数realloc()来实现。realloc()函数可以重新分配已分配的内存块的大小,因此可以用它来调整数组的大小。
以下是一个示例代码,演示了如何使用realloc()实现可变大小的数组:
#include
#include
int main() {
int* arr = NULL; // 初始化数组指针为NULL
int size = 0; // 数组大小
int input;
int i;
printf("请输入数组元素个数:");
scanf("%d", &size);
arr = (int*)malloc(size * sizeof(int)); // 分配初始大小的内存空间
printf("请输入数组元素:\n");
for (i = 0; i < size; i++) {
scanf("%d", &arr[i]);
}
printf("数组元素为:");
for (i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
printf("请输入要添加的元素:");
scanf("%d", &input);
size++; // 增加数组大小
arr = (int*)realloc(arr, size * sizeof(int)); // 重新分配更大的内存空间
arr[size - 1] = input; // 添加新元素到数组末尾
printf("更新后的数组元素为:");
for (i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
free(arr); // 释放内存空间
return 0;
}
在这个示例中,首先通过malloc()函数分配了一个初始大小的内存空间来保存数组元素。然后,通过realloc()函数重新分配更大的内存空间,以保存新增加的元素。在添加新元素之前,先将数组的大小加1。最后,使用for循环遍历并打印更新后的数组元素。最后,使用free()函数释放动态分配的内存空间。
上一篇:不使用make函数能否创建通道?