在C语言中,合并两个数组可以通过多种方法实现,以下是一些常见的方法:
(图片来源网络,侵删)
1、使用循环遍历数组元素并逐个复制到新数组中,这种方法适用于两个数组具有相同的大小。
2、使用memcpy
函数直接将一个数组的内容复制到另一个数组中,这种方法适用于两个数组具有相同的大小。
3、使用动态内存分配创建一个新的数组,其大小为两个原始数组的大小之和,使用循环遍历原始数组并将元素复制到新数组中,这种方法适用于两个数组具有不同的大小。
下面分别介绍这三种方法的实现过程。
方法一:使用循环遍历数组元素并逐个复制到新数组中
#include <stdio.h> #include <stdlib.h> int main() { int arr1[] = {1, 2, 3}; int arr2[] = {4, 5, 6}; int n = sizeof(arr1) / sizeof(arr1[0]); int m = sizeof(arr2) / sizeof(arr2[0]); int *arr3 = (int *)malloc((n + m) * sizeof(int)); for (int i = 0; i < n; i++) { arr3[i] = arr1[i]; } for (int i = 0; i < m; i++) { arr3[i + n] = arr2[i]; } for (int i = 0; i < n + m; i++) { printf("%d ", arr3[i]); } free(arr3); return 0; }
方法二:使用memcpy
函数直接将一个数组的内容复制到另一个数组中
#include <stdio.h> #include <string.h> int main() { int arr1[] = {1, 2, 3}; int arr2[] = {4, 5, 6}; int n = sizeof(arr1) / sizeof(arr1[0]); int m = sizeof(arr2) / sizeof(arr2[0]); int *arr3 = (int *)malloc((n + m) * sizeof(int)); memcpy(arr3, arr1, n * sizeof(int)); memcpy(arr3 + n, arr2, m * sizeof(int)); for (int i = 0; i < n + m; i++) { printf("%d ", arr3[i]); } free(arr3); return 0; }
方法三:使用动态内存分配创建一个新的数组,其大小为两个原始数组的大小之和,使用循环遍历原始数组并将元素复制到新数组中,这种方法适用于两个数组具有不同的大小。
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int n1 = 3; int n2 = 4; int *arr1 = (int *)malloc(n1 * sizeof(int)); int *arr2 = (int *)malloc(n2 * sizeof(int)); int *arr3 = (int *)malloc((n1 + n2) * sizeof(int)); for (int i = 0; i < n1; i++) { arr1[i] = i + 1; } for (int i = 0; i < n2; i++) { arr2[i] = i + 4; } for (int i = 0; i < n1; i++) { arr3[i] = arr1[i]; } for (int i = 0; i < n2; i++) { arr3[i + n1] = arr2[i]; } for (int i = 0; i < n1 + n2; i++) { printf("%d ", arr3[i]); } free(arr1); free(arr2); free(arr3); return 0; }
以上三种方法都可以实现C语言中两个数组的合并,在实际编程过程中,可以根据具体需求选择合适的方法。
原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/378403.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复