c语言删除数组中多个元素
时间: 2024-09-18 21:02:06 浏览: 46
C语言 - 删除数组中的指定元素(Delete).pdf
在 C 语言中,删除数组中的多个元素并不是直接的操作,因为数组一旦初始化,其大小是固定的,并且元素是连续存储的。如果你想从数组中移除元素,通常需要重新分配内存并移动其他元素来填补空缺。这里有一个示例,假设你要删除一个整数数组中的所有特定值:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个函数删除数组中的目标值
void removeDuplicates(int* arr, int size, int target) {
// 初始化新的数组长度
int new_size = 0;
// 遍历原数组
for (int i = 0; i < size; ++i) {
if (arr[i] != target) {
// 如果不是目标值,则复制到新数组
arr[new_size++] = arr[i];
}
}
// 调整原数组边界,使之只包含新内容
arr[new_size] = 0; // 设置新数组结束标志(也可以省略,取决于是否继续遍历)
// 如果原数组有剩余空间,释放之前的空间
if (size > new_size) {
free(arr); // 释放旧数组
arr = realloc(arr, sizeof(int) * new_size); // 重新分配内存
}
}
int main() {
int array[] = {1, 2, 2, 3, 4, 4, 5};
int size = sizeof(array) / sizeof(array[0]);
int target = 2;
printf("Original array: ");
for (int i = 0; i < size; ++i) {
printf("%d ", array[i]);
}
removeDuplicates(array, size, target);
printf("\nArray after removing %d: ", target);
for (int i = 0; array[i]; ++i) {
printf("%d ", array[i]);
}
return 0;
}
```
这个示例会删除数组中所有的 `target` 值。注意,由于没有内建的方式来直接删除数组元素,这种方法会创建一个新的数组。如果你的数组非常大,这可能会消耗大量内存。
阅读全文