c语言怎么给数组添加新的项
时间: 2024-11-15 11:27:40 浏览: 4
c语言编程题之数组操作删除排序数组中的重复项.zip
在C语言中,数组一旦定义并初始化后,其长度通常是固定的,不能直接在其末尾添加新项。如果你想动态地存储更多数据,可以考虑使用动态内存分配,如通过`malloc()`函数分配空间。
以下是一个简单的示例,如何使用`realloc()`函数在数组末尾追加元素:
```c
#include <stdio.h>
#include <stdlib.h>
#define ARRAY_SIZE 5
int main() {
int array[ARRAY_SIZE]; // 原始数组
int *newArray; // 指向动态分配的数组
int i;
for (i = 0; i < ARRAY_SIZE; i++) {
array[i] = i * 2; // 初始化部分数组元素
printf("%d ", array[i]);
}
// 需要追加元素时,先检查当前数组是否已满
if (i == ARRAY_SIZE) {
newArray = (int*)realloc(array, sizeof(int) * (ARRAY_SIZE * 2)); // 动态分配更多的内存
if (newArray == NULL) { // 如果内存分配失败,处理错误
perror("Memory allocation failed");
return 1;
}
// 将原数组内容移动到扩容后的内存区域
memmove(newArray + ARRAY_SIZE, array, sizeof(int) * ARRAY_SIZE);
array = newArray; // 更新指向新数组的指针
// 现在可以在新数组末尾添加元素
array[i++] = 10; // 添加新元素
printf("\nNew element: %d", array[i]);
}
free(array); // 使用完后记得释放动态内存
return 0;
}
```
在这个例子中,我们首先创建了一个固定大小的数组,然后如果需要更多空间,就使用`realloc()`函数扩大数组的大小,并将原有数据复制到新的内存位置。注意,`realloc()`不会改变原始数组的地址,因此我们需要更新`array`的指针。
阅读全文