fun函数这里给变量重新赋值x=3,y=4,为什么主函数里输出的还是原来的值呢

img


fun函数这里给变量重新赋值x=3,y=4,为什么主函数里输出的还是原来的值呢

因为fun函数里面没有return,没有返回值就不会影响主函数里面的值,所以输出还是xy原来的值

可以这样理解,两个x, y不是同一组数据,它们的地址不同,main函数中的x, y只是把它们表示的值传入fun函数,并不是把他们自身传入。

可以将fun里面的x y看成其他比如m n
fun里面的是将m n赋值而不是main里面的x y
main里面的x y在开始赋值后没有变动

因为这是值传递,并没有影响到主函数里的对应变量,因此输出原值。

fun函数里面的变量属于局部变量,main函数中,调用了fun函数,并将x=1,y=2作为参数传递过去,所以在fun函数会打印出x=1,y=2.然后执行
x=3,y=4(这里并没有return 回去)到此fun函数运行结束,跳转会main函数,main函数执行printf方法,将x=1,y=2打印出来