自定义函数交换两个变量的值怎么理解?求指教!

  1. void funa(int *x , int *y)

  2. {

  3.     int t = *x;

  4.     *x = *y;

  5.     *y = t;

  6. }

代码是这样的        这样的一个函数体里面  可以理解是  交换两个变量的地址对吗?   但是怎么把值返回main()呢?funa()里面的参数作用域不就只能在它自己的函数体吗? 出了这个函数它就找不到了啊 

荒小北158
浏览 2055回答 2
2回答

快乐的时光

int a=3,b=5;funa(&a,&b);这里设置两个变量,a,b,分别为3和5;执行funa函数,把内存里变量a和b的地址传给参数,即*x = &a,*y = &b; 此时指针x,y分别指向内存a和b的空间。所以在函数funa里面交换*x,*y的值便是在内存中交换a,b的值。funa里面的参数作用域是直接在内存当中进行操作。主要是因为它的参数是指针形式。作用于就是在内存当中,不受函数作用域影响。

奕吉啊

这样写是不会交换两个变量的值的哦
打开App,查看更多内容
随时随地看视频慕课网APP