动态数组练习,初始化10000个元素,然后扩展到20000个元素,最后缩减到15000个元素。使用c语言
时间: 2024-09-10 16:04:48 浏览: 54
C语言的各种初始化(基础类)
在C语言中,动态数组通常通过`malloc()`和`realloc()`函数来管理内存,以下是创建、扩展和缩减动态数组的一个基本示例:
首先,我们使用`malloc()`来分配足够的空间初始化10000个元素:
```c
#include <stdlib.h>
#include <stdio.h>
int main() {
int *dynamicArray = malloc(10000 * sizeof(int)); // 初始化10000个元素
if (dynamicArray == NULL) { // 检查内存分配是否成功
printf("Memory allocation failed.\n");
return 1;
}
// 初始化数组...
for (int i = 0; i < 10000; i++) {
dynamicArray[i] = 0; // 假设所有初始元素都设置为0
// ...其他初始化操作
}
// 扩展到20000个元素
if (10000 != realloc(dynamicArray, 20000 * sizeof(int))) { // 如果需要,扩大内存
free(dynamicArray);
dynamicArray = malloc(20000 * sizeof(int));
if (dynamicArray == NULL) {
printf("Re-allocation failed.\n");
return 1;
}
} else {
// 内存大小没变,不需要实际扩展,但数组仍然可用
}
// 缩减到15000个元素
if (20000 > 15000 && dynamicArray != NULL) {
dynamicArray = realloc(dynamicArray, 15000 * sizeof(int)); // 缩小内存
if (dynamicArray == NULL) {
printf("Shrinking memory failed.\n");
} else {
// 现在有15000个元素,多余的元素可能会被自动置零
}
}
// 使用动态数组...
// ...进行操作
free(dynamicArray); // 清理不再需要的内存
return 0;
}
```
在这个例子中,我们假设`realloc()`在内存大小增加时不会改变原指针,如果原始指针变得无效,则需要重新分配并保存新的指针。
阅读全文