用指针的方式合并两个数组,请举例
时间: 2024-05-06 10:21:26 浏览: 8
当然可以!假设我们有两个数组 arr1 和 arr2,接下来我们可以使用指针的方式将它们合并到第三个数组 arr3 中,示例代码如下:
```c++
int arr1[] = {1, 2, 3, 4};
int arr2[] = {5, 6, 7, 8, 9};
int arr3[9];
int len1 = sizeof(arr1) / sizeof(arr1[0]);
int len2 = sizeof(arr2) / sizeof(arr2[0]);
int len3 = len1 + len2;
int *p1 = arr1;
int *p2 = arr2;
int *p3 = arr3;
for(int i = 0; i < len3; i++){
if(i < len1){
*p3 = *p1;
p1++;
}
else{
*p3 = *p2;
p2++;
}
p3++;
}
```
这段代码的运行结果是将 arr1 和 arr2 两个数组中的元素按顺序存储到 arr3 中。
相关问题
用指针交换两个数组元素
可以通过指针交换两个数组元素,具体步骤如下:
1. 定义两个指向数组元素的指针,假设为p1和p2;
2. 将p1指向第一个要交换的元素,将p2指向第二个要交换的元素;
3. 通过临时变量,交换两个元素的值。
示例代码如下:
```c
void swap(int *p1, int *p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int *p1 = &arr[1];
int *p2 = &arr[3];
printf("交换前的数组:");
for(int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
swap(p1, p2);
printf("交换后的数组:");
for(int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
输出结果为:
```
交换前的数组:1 2 3 4 5
交换后的数组:1 4 3 2 5
```
注意:在定义指针时,需要将指针指向数组元素的地址,否则无法正确交换元素。
如何用指针交换两个数组的内容
可以通过以下代码来用指针交换两个数组的内容:
```c++
void swapArray(int* arr1, int* arr2, int size) {
int* temp = new int[size];
memcpy(temp, arr1, size * sizeof(int));
memcpy(arr1, arr2, size * sizeof(int));
memcpy(arr2, temp, size * sizeof(int));
delete[] temp;
}
```
这里传入了两个数组的指针 `arr1` 和 `arr2`,以及数组的大小 `size`。首先用 `new` 操作符动态分配一个临时数组 `temp`,然后使用 `memcpy` 函数将 `arr1` 的数据复制到 `temp` 中。接着,将 `arr2` 的数据复制到 `arr1` 中,最后将 `temp` 中的数据复制到 `arr2` 中。注意,在交换完成后需要使用 `delete[]` 释放 `temp` 数组的内存空间。