c语言数值交换相关问题

img

为什么f1和f2不能实现数值交换啊 为什么x还是3.14 y还是6.28🥺

f1是交换了形参的值,这个并没有修改外面的值。
f2则交换了2个指针形参的指向,也不影响函数外面的值。

函数f1()两个形参与实参只是值传递,在函数体内完成值交换,两个变量的作用域仅限函数体内,函数调用结束后,主函数里的实参并没有被改变。
函数f2()两个形参与实参只是指针变量的值传递,虽然完成两个指针变量的指向交换,且两个变量的作用域仅限函数体内,并没有对变量 x y 起作用。
函数f3()两个变量的地址传递,实现对两个变量的存储内容的交换。