void swap(int *x,int y) { int temp ; temp=*x ; *x=y ; y=temp ; }解释这个函数
时间: 2023-12-02 22:02:37 浏览: 318
这个函数使用指针来实现变量值的交换,函数的参数包括一个指向整型变量的指针 x 和一个整型变量 y。具体来说,函数中的操作如下:
1. 首先,将 x 指向的变量的值存储到临时变量 temp 中。
```
int temp;
temp = *x;
```
2. 然后,将 y 的值赋给 x 指向的变量。
```
*x = y;
```
3. 最后,将 temp 的值赋给 y,即将 x 指向的变量的值赋给 y。
```
y = temp;
```
这样,在调用 swap 函数时,可以将需要交换的两个变量的地址和值作为参数传递给 swap 函数,从而实现变量值的交换。具体代码如下:
```
int a = 1, b = 2;
swap(&a, b);
```
需要注意的是,函数中的第二个参数 y 是按值传递的,即在函数中修改 y 的值不会影响原变量的值。如果想要在函数中修改原变量的值,需要将其地址作为参数传递给函数。因此,函数的第二个参数应该是 int *y,而不是 int y。
相关问题
void swap(int *x,int *y) {int *p; *p=*x; *x=*y; *y=*p;} 这个代码存在什么问题?
这个代码存在问题,因为指针p没有被初始化,所以在执行*p=*x时会出现未定义的行为。应该先将p指向一个合法的内存地址,例如可以使用以下代码进行改进:
```c
void swap(int *x, int *y) {
int temp;
int *p = &temp;
*p = *x;
*x = *y;
*y = *p;
}
```
void swap(int *p1,int *p2) { int *temp; *temp=*p1; *p1=*p2; *p2=*temp; }
以下是一个演示如何使用void swap(int *p1,int *p2)函数交换两个指针所指向的值的例子:
```c
#include <stdio.h>
void swap(int *p1, int *p2) {
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main() {
int num1 = 10;
int num2 = 20;
printf("交换前:num1 = %d, num2 = %d\n", num1, num2);
swap(&num1, &num2);
printf("交换后:num1 = %d, num2 = %d\n", num1, num2);
return 0;
}
```
输出结果:
```
交换前:num1 = 10, num2 = 20
交换后:num1 = 20, num2 = 10
```
阅读全文