这个程序为什么没有互换成功,#include <stdio.h> void swap1(int a,int b) {int t; t=a; a=b; b=t; } void main() { int a=3; int b=5; if(a<b) swap1(a,b); printf("互换后结果为%d %d\n",a,b); }
时间: 2023-08-06 20:06:49 浏览: 70
无法从 int? 转换为 int 运行时出现错误
这个程序没有成功地进行互换是因为在函数 `swap1` 中,传递的是变量 `a` 和 `b` 的值的副本,而不是变量本身。因此,函数内部对传递进来的 `a` 和 `b` 进行的操作不会影响到 `main` 函数中的变量 `a` 和 `b`。如果想要成功互换,可以将函数 `swap1` 改为使用指针进行操作,或者将函数返回值赋给 `a` 和 `b`。例如:
```
#include <stdio.h>
void swap1(int* a, int* b) {
int t;
t = *a;
*a = *b;
*b = t;
}
int main() {
int a = 3;
int b = 5;
if (a < b) {
swap1(&a, &b);
}
printf("互换后结果为 %d %d\n", a, b);
return 0;
}
```
这样,传递给 `swap1` 函数的是指向 `a` 和 `b` 的指针,函数内部对指针所指向的内容进行操作,可以实现成功的互换。
阅读全文