void swap(int p1,int p2) //定义swap函数 { int temp; }
时间: 2023-12-13 21:03:22 浏览: 56
你定义的`swap`函数中缺少了实现交换两个变量值的代码。在你提供的代码中,`temp`变量没有被使用,也没有将`p1`和`p2`的值进行交换。
下面是一个完整的交换两个变量值的示例代码:
```c
void swap(int* p1, int* p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
```
在这个示例中,我们使用指针作为函数参数,通过指针来操作变量的值。`p1`和`p2`是指向整型变量的指针。我们使用一个临时变量`temp`来保存`p1`指向的值,然后将`p2`指向的值赋给`p1`,最后将`temp`的值赋给`p2`,实现了两个变量值的交换。
希望这能帮助到你。如果还有其他问题,请随时提问。
相关问题
void swap(int *p1,int *p2) //定义swap函数 { int *temp; *temp=*p1; *p1=*p2; *p2=*temp; } 为什么这个不对
你提供的代码有一个问题,即`temp`指针没有被正确初始化。在执行`*temp = *p1;`这行代码时,由于`temp`指针没有指向任何有效的内存位置,会导致未定义的行为。
为了修正这个问题,你需要为`temp`指针分配内存空间,或者使用一个已经存在的变量来作为中间变量。下面是两种修正的方法:
1. 使用已经存在的变量作为中间变量:
```c
void swap(int *p1, int *p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
```
2. 分配内存空间给`temp`指针:
```c
void swap(int *p1, int *p2) {
int *temp = (int*)malloc(sizeof(int));
*temp = *p1;
*p1 = *p2;
*p2 = *temp;
free(temp); // 释放内存空间
}
```
这两种修正方法都可以正确地交换两个指针所指向的值。
希望能够帮助到你。如果还有其他问题,请随时提问。
#include <stdio.h> void swap(int *p1,int *p2) { int temp; temp=*p1; *p1=*p2; *p2=temp; } int main() { int a,b,c,*p1,*p2,*p3; ; //指针 p1 指向变量 a ; //指针 p2 指向变量 b ; //指针 p3 指向变量 c scanf("%d%d%d", ); //使用指针变量输入整数 if(a>b) ; //调用 swap 函数,交换 a,b 的值 if(a>c) ; //调用 swap 函数,交换 a,b 的值 if(b>c) ; //调用 swap 函数,交换 a,b 的值 printf("%d %d %d\n",*p1,*p2,*p3); //利用指针输出结果 return 0; }
这段代码中存在一些错误,我来帮您修改一下:
```c
#include <stdio.h>
void swap(int *p1, int *p2) {
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main() {
int a, b, c, *p1, *p2, *p3;
p1 = &a; //指针 p1 指向变量 a
p2 = &b; //指针 p2 指向变量 b
p3 = &c; //指针 p3 指向变量 c
scanf("%d%d%d", p1, p2, p3); //使用指针变量输入整数
if (*p1 > *p2) {
swap(p1, p2); //调用 swap 函数,交换 a,b 的值
}
if (*p1 > *p3) {
swap(p1, p3); //调用 swap 函数,交换 a,c 的值
}
if (*p2 > *p3) {
swap(p2, p3); //调用 swap 函数,交换 b,c 的值
}
printf("%d %d %d\n", *p1, *p2, *p3); //利用指针输出结果
return 0;
}
```
在这个代码中,我们首先定义了三个整数变量:a、b、c,以及三个指向整数变量的指针变量:p1、p2、p3。然后,通过`scanf`语句,从用户输入中获取这三个整数的值。
接下来,我们使用指针变量和`swap`函数来对这三个整数进行排序。在`swap`函数中,我们通过指针变量和临时变量temp来交换变量的值。在主函数中,我们使用`if`语句和指针变量来比较三个数的大小关系,然后调用`swap`函数来交换变量的值,实现了对三个数的排序。
最后,我们使用指针变量和`printf`语句将排序后的结果输出到屏幕上。
需要注意的是,在调用`swap`函数和使用`printf`语句时,我们需要使用指针变量来访问变量的值,即使用`*`符号来解引用指针。
阅读全文