#include <stdio.h> int fun(int *x,int y) { int

#include <stdio.h>

int fun(int *x,int y)
{
int t ;
/**************found**************/
t = *x ; *x = y ;
/**************found**************/
return(t) ;
}

main()
{
int a = 3, b = 8 ;

printf("%d %d\n", a, b) ;
b = fun(&a, b) ;
printf("%d %d\n", a, b) ;
}

为什么a,b的值能够交换,特别是a的值怎么变的,对指针的知识不太熟。

您好~
main函数中先定义了a和b,并初始化a = 3,b = 8;
然后打印出a和b的值
接下来是fun()函数,将传入a的地址给形参x,将b的值给形参y
在fun()函数中把*x(x是地址,*x是该地址对应的值,即a的值3)给t,把y的值给x地址所对应的内存单元(变量a),所以a = 8。
最后return t,就是将3返回给b,完成交换。
谢谢,望采纳~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-04
在调用int fun(int *x,int y)函数时,将a的地址作为参数 传进去。把b的值放在了a的地址上,那么a的这块地址上的数值就成了b的值,所以a的值变了。
相似回答