c语言合并两个数组;
时间: 2024-09-24 19:05:47 浏览: 19
在 C 语言中,合并两个数组通常意味着创建一个新的数组,包含两个输入数组的所有元素。这可以通过动态内存分配和复制数据来完成。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h> // 包含 malloc 和 free 功能
// 定义结构体来存储数组信息
typedef struct {
int *arr; // 数组地址
size_t len; // 长度
} ArrayInfo;
// 合并两个数组
ArrayInfo* mergeArrays(int arr1[], int arr2[], int len1, int len2) {
// 计算新数组的总长度
size_t totalLen = len1 + len2;
// 动态分配新的数组空间
ArrayInfo *mergedArr = (ArrayInfo*)malloc(sizeof(ArrayInfo));
if (!mergedArr) {
printf("Memory allocation failed.\n");
exit(1);
}
mergedArr->arr = (int*)malloc(totalLen * sizeof(int));
if (!mergedArr->arr) {
free(mergedArr);
printf("Memory allocation for new array failed.\n");
exit(1);
}
// 将第一个数组复制到新数组
memcpy(mergedArr->arr, arr1, len1 * sizeof(int));
// 将第二个数组添加到新数组末尾
memcpy(mergedArr->arr + len1, arr2, len2 * sizeof(int));
mergedArr->len = totalLen;
return mergedArr;
}
int main() {
int arr1[] = {1, 2, 3};
int len1 = sizeof(arr1) / sizeof(arr1[0]);
int arr2[] = {4, 5, 6};
int len2 = sizeof(arr2) / sizeof(arr2[0]);
ArrayInfo *merged = mergeArrays(arr1, arr2, len1, len2);
printf("Merged array: ");
for (size_t i = 0; i < merged->len; i++) {
printf("%d ", merged->arr[i]);
}
free(merged->arr);
free(merged);
return 0;
}
```
这个程序首先计算合并后的数组长度,然后分配足够的内存来存储所有元素。接着将两个输入数组的内容复制到新数组中。最后,在`main`函数里打印合并后的数组并释放之前分配的内存。