1.传名(替换操作)
- 把这种方式理解为替换操作,把P函数参数X、Y、Z和P函数内部的Y、Z替换为A、B,然后P函数对Y、Z的操作,其实就是对A、B的操作;
- 需要注意这和传地址一样,上面对A造成的变化,影响下面的操作,注意用新值(也就是改变后的值);
2.传地址(指针)
- 这种传参方式,可以理解为C语言的传地址函数参数,A、B直接把自己的地址给函数参数了,所以函数对A、B地址的改变会影响主函数A、B的值,而下面的传值比较简单,不传地址;
- 注意A+B是一个新的内存地址,传地址这种题,画个变量在内存的状态,然后P函数的参数当做指针,指向所传给它的地址;
3.得结果(局部变量操作,最后赋一下值)
- 这个传参方式不太好理解,就是P(X,Y,Z),P函数内部还是对局部变量进行操作,和传值一样,但是需要多一步操作,就是把形参X,Y,Z值传给主函数的实参(A+B,A,A),也就是执行完P函数的X的值赋给A+B,Y的值赋给A,Z的值也赋给A,注意A有两次赋值操作,那么后赋值的会覆盖之前的,所以A的取值就是Z的值,而不是Y的值;
- 总而言之:X、Y、Z的操作当成局部变量来做(当成传值来做),最后对应着把形参的值赋给实参,后赋值的覆盖之前的;
4.传值(局部变量)
传值比较简单,道理和C语言一样,函数参数不是指针,那么函数P对X、Y、Z的改变,对于主函数来说没有任何影响,所以主函数中的A、B的值原来是多少,现在还是多少;
程序执行流程如下图: