一直都对函数的传值、传地址和传引用都存在有很大的困惑,今天在网上看了才知道他们的区别,这时才恍然大悟。
       其实也很容易理解:
       传值,
               是把实参传给行参,
               对行参的修改是不会影响到实参的。
       传址,
               传送的是地址,行参和实参都指向同一个对象。
        传引用,
               传递后行参和实参是同一个对象,只是名字不同,
                对行参的修改将会影响到实参的值。


从函数角度考虑
       传值,
              函数压栈的是参数的副本,
              任何修改都只是在副本上的修改,原来的值是不变的;
       传址,
              也就是 对指针进行操作时,指针是指向那个变量的,
              因此是对原来的变量的操作;之前是需要进行解指针操作的;
       传引用,
             是对引用副本的操作,引用指向那个变量,对引用的操作也就是对变量的操作,(跟传址相比少了解析指针);



函数参数传递机制的基本理论   
    函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数。   
     值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的 实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。   
     引用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数 放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做 的任何操作都影响了主调函数中的实参变量。