值传递和地址传递 值传递和地址传递如何实现


值传递和地址传递 值传递和地址传递如何实现

文章插图
按值传递:在过程被调用时,传递给形参的是调用过程中的相应实参的值,形参与实参各占有不同位置的储存空间,被调用过程在执行过程中,改变了形参变量的值,但不会调用过程的实参值 。
按地址传递:就是当调用一个过程时 , 是把实参变量的内存地址传递给被调用过程的形参,也就是说形参与实参使用相同地址的内存单元 。因此当在被调用过程中改变形参的值,就等于改变了实参的值 。
按值传递时,实质上实参a只是把一个副本传递给形参x,也可以直接理解为传递的结果是让x*2中的x的值等于10(即a的值),乘以2后再赋值(赋值不用解释吧)给x,即实际上w方法的运算并没有对a本身进行操作 。所以调用w方法前后a值始终等于10,而w方法得到的结果是20 。
【值传递和地址传递 值传递和地址传递如何实现】
按址传递时,实质上实参a是把指针(地址)传递给形参x,这个指针指向的地址的值即是10,此时a与x分别有一个指针同时指向10所在地址,即实际上w方法对a本身直接进行了操作(a自身参与运算) 。所以调用w方法前后a值分别等于10和20,而w方法得到的结果是依然是20 。