为什么指针可以实现交换两个数
时间: 2024-04-16 15:27:49 浏览: 24
第一个函数:
```c
void swapPointers(int** p, int** q) {
int* temp = *p;
*p = *q;
*q = temp;
}
```
第二个函数:
```c
void swapNumbers(int* p, int* q) {
int temp = *p;
*p = *q;
*q = temp;
}
```
在主调函数中可以这样使用:
```c
int main() {
int a = 1, b = 2;
int* p = &a;
int* q = &b;
printf("Before swap: *p=%d, *q=%d\n", *p, *q);
swapPointers(&p, &q);
printf("After swap pointers: *p=%d, *q=%d\n", *p, *q);
swapNumbers(p, q);
printf("After swap numbers: *p=%d, *q=%d\n", *p, *q);
return 0;
}
```
相关问题
编写函数利用指针实现将两个数交换
下面是一个利用指针实现交换两个数的函数:
```c
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
在函数中,我们定义了两个指向整型变量的指针 `a` 和 `b`,然后通过指针交换了它们所指向的值。这样,在函数执行完毕后,原来的 `a` 变量所存储的值就变成了 `b` 所存储的值,而原来的 `b` 变量所存储的值也变成了 `a` 所存储的值。下面是一个例子:
```c
int main() {
int x = 10, y = 20;
printf("Before swap: x = %d, y = %d\n", x, y);
swap(&x, &y);
printf("After swap: x = %d, y = %d\n", x, y);
return 0;
}
```
在这个例子中,我们定义了两个变量 `x` 和 `y`,并初始化它们的值为 10 和 20。然后,我们调用 `swap` 函数,并将 `x` 和 `y` 的地址作为参数传递给函数。最后,我们输出交换后的结果。
用指针实现两个数的交换
以下是用指针实现两个数的交换的C语言代码:
```
#include <stdio.h>
void swap(int *a, int *b);
int main() {
int x = 10, y = 20;
printf("Before swap: x = %d, y = %d\n", x, y);
swap(&x, &y);
printf("After swap: x = %d, y = %d\n", x, y);
return 0;
}
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
输出:
```
Before swap: x = 10, y = 20
After swap: x = 20, y = 10
```
在 `main` 函数中,我们定义了两个整数变量 `x` 和 `y` 并初始化为 `10` 和 `20`。然后我们调用了 `swap` 函数,并将 `x` 和 `y` 的地址作为参数传递给它。
在 `swap` 函数中,我们定义了一个整数变量 `temp` 并将 `a` 指针所指向的值赋给它。然后我们将 `b` 指针所指向的值赋给 `a` 指针所指向的值,将 `temp` 的值赋给 `b` 指针所指向的值。这样就完成了两个数的交换。