c语言用指针完成三数交换
时间: 2024-09-12 13:11:27 浏览: 42
指针变量作为函数参数-C语言第8章_zz指针
在 C 语言中,可以使用三个指针来完成对任意三个整数的无临时变量交换操作。以下是步骤:
1. 定义三个指向整数的指针,通常我们假设它们分别是 `p1`, `p2`, 和 `p3`,分别指向需要交换的三个数。
```c
int *p1, *p2, *p3;
int a, b, c; // 这里假设 a、b 和 c 是需要交换的数值
```
2. 初始化这三个指针,并将它们分别指向 `a`, `b`, 和 `c` 的地址。
```c
p1 = &a;
p2 = &b;
p3 = &c;
```
3. 创建临时存储 `p1` 指向的值的指针 `temp1`,然后把 `p1` 的值赋给 `p2`。
```c
int temp1 = *p1;
*p1 = *p2;
*p2 = temp1;
```
4. 同理,用同样的方式将 `p2` 的值赋给 `p3`,然后把第一步保存的 `temp1` 再次赋给 `p3`。
```c
int temp2 = *p2;
*p2 = *p3;
*p3 = temp2;
```
现在,`p1`, `p2`, 和 `p3` 分别指向的数已经完成了交换,而无需额外的存储空间。完整的代码如下:
```c
#include <stdio.h>
void swapThree(int *p1, int *p2, int *p3) {
int temp1 = *p1;
*p1 = *p2;
*p2 = temp1;
int temp2 = *p2;
*p2 = *p3;
*p3 = temp2;
}
int main() {
int a = 10, b = 20, c = 30;
printf("Before swapping: a=%d, b=%d, c=%d\n", a, b, c);
swapThree(&a, &b, &c);
printf("After swapping: a=%d, b=%d, c=%d\n", a, b, c);
return 0;
}
```
阅读全文