如何用指针交换两个数组的内容
时间: 2023-07-20 13:44:25 浏览: 64
可以通过以下代码来用指针交换两个数组的内容:
```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` 数组的内存空间。
相关问题
用指针交换两个数组元素
可以通过指针交换两个数组元素,具体步骤如下:
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语言中利用指针交换两个数组
可以使用指针来交换两个数组。具体的实现方法如下:
```c
#include <stdio.h>
void swapArray(int *arr1, int *arr2, int size){
int temp;
for(int i=0; i<size; i++){
temp = *(arr1+i);
*(arr1+i) = *(arr2+i);
*(arr2+i) = temp;
}
}
int main(){
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = {6, 7, 8, 9, 10};
int size = sizeof(arr1)/sizeof(int);
printf("Before swapping:\n");
for(int i=0; i<size; i++){
printf("%d ", arr1[i]);
}
printf("\n");
for(int i=0; i<size; i++){
printf("%d ", arr2[i]);
}
printf("\n");
swapArray(arr1, arr2, size);
printf("After swapping:\n");
for(int i=0; i<size; i++){
printf("%d ", arr1[i]);
}
printf("\n");
for(int i=0; i<size; i++){
printf("%d ", arr2[i]);
}
printf("\n");
return 0;
}
```
这个程序中,我们定义了一个 `swapArray()` 函数来交换两个数组。它接收两个指向数组的指针和数组大小作为参数。在函数内部,我们使用一个循环来遍历两个数组,并交换对应位置的元素。最后,我们在主函数中调用 `swapArray()` 函数并输出交换前后的数组元素。注意,在交换数组时需要使用指针来访问数组元素。