wap( int* p1,int* p2 )\n{\nint * p;\n*p = *p1;\n*p1 = *p2;\n*p2 = *p;\n}
时间: 2024-06-23 18:03:16 浏览: 163
这段代码定义了一个名为 `wap` 的函数,它接受两个指向整数(int*)的指针 `p1` 和 `p2` 作为参数。这个函数的作用是将两个指针所指向的整数值进行交换。函数内部首先声明了一个新的指针 `p`,然后通过解引用操作 `*p` 将 `p1` 指向的值赋给 `p`,接着将 `p2` 指向的值赋给 `p1`,最后将 `p`(即 `p2` 的原始值)赋给 `p2`。这样就完成了两个变量值的交换。
相关问题:
1. 这个函数是如何实现值交换的?
2. 如果 `p1` 和 `p2` 指向的是同一个地址会发生什么?
3. 这段代码中如果 `p` 不声明会怎么样?
相关问题
【程序改错】 功能:以下程序把两个数按由大到小的顺序输出来. #include stdio.h /****=*****ERROR*===* void swap(int *p1*p2) int p; p=*p1;*p1=*p2;*p2=p;
【程序改错】
功能:以下程序把两个数按由大到小的顺序输出来.
1. 缺少了头文件的尖括号 "<>"。
2. swap函数的参数中,指针类型的声明缺少了逗号。
3. swap函数中,变量p没有声明类型。
4. swap函数中,变量p的赋值语句缺少了分号。
5. swap函数中,指针变量*p1和*p2所指向的值应该互换。
改正后的程序如下:
```c
#include <stdio.h>
void swap(int *p1, int *p2);
int main(void) {
int a, b;
scanf("%d%d", &a, &b);
if (a < b) {
swap(&a, &b);
}
printf("%d %d\n", a, b);
return 0;
}
void swap(int *p1, int *p2) {
int p = *p1;
*p1 = *p2;
*p2 = 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
```
阅读全文