#include< stdio.h> void fun(int *pa, int *pb) { int *t; t = pa; pa = pb; pb = t; } void main() { int x=10,y=20; fun(&x,&y); printf("%d,%d\n",x,y); }
时间: 2023-12-02 11:06:08 浏览: 202
该程序的输出结果为 `10, 20`。
在函数 `fun()` 中,交换的是指针变量 `pa` 和 `pb` 的值,而不是它们所指向的变量的值。在函数中,指针变量 `pa` 和 `pb` 的值被交换了,但是 `main()` 函数中的 `x` 和 `y` 的值并没有改变。
因此,程序输出的结果仍然是 `10, 20`。
相关问题
//程序阅读,输出结果 #include <stdio.h> void swap1(int *pa, int *pb) { int t; t = *pa; *pa = *pb; *pb = t; } int main() { int a = 7, b = 6; swap1(&a, &b); printf("%d", a*10+b); }
程序输出的结果应该是 67。因为程序中定义了一个函数 swap1,该函数接收两个 int 类型的指针参数 pa 和 pb,将它们所指向的值进行交换。在主函数中定义了两个 int 类型的变量 a 和 b,分别赋值为 7 和 6。然后调用 swap1 函数,传递 a 和 b 的地址作为参数。swap1 函数执行后,a 和 b 的值被互换,变成了 6 和 7。最后在主函数中将 a 和 b 顺序输出,结果为 67。
#include<stdio.h> #include<stdlib.h> void swap2(int *p1,int *p2) { int *t; t=p1; p1=p2; p2=t; } void main() { int a=3; int b=5; int *pa=&a,*pb=&b; printf("俩个数据值为%d %d\n",a,b); if(a<b) swap2(pa,pb); printf("互换后的结果为%d %d\n",a,b); system("pause"); }为什么互换不成功
这个程序中的 `swap2` 函数并没有真正交换指针所指向的变量的值,而是只交换了指针本身的值。因此,当 `swap2` 函数返回后,`pa` 和 `pb` 指向的变量并没有发生交换,因此互换不成功。
要让函数真正交换指针所指向的变量的值,应该改为这样:
```
void swap2(int *p1,int *p2) {
int t = *p1;
*p1 = *p2;
*p2 = t;
}
```
这样就可以成功交换 `pa` 和 `pb` 指向的变量的值了。
阅读全文