对于exchange与realexchange的关系与区别,这两个变量实际上只是在形参变量与实参变量值传递上,exchange的修改不会改变realexchange的值,只是把exchange的值复制了一份赋值给了realexchange。
对于这里面的变量修改与改变可以引入堆栈这个概念,实参的空间是固定的,在进行给实参变量赋值的的过程中,有两点是需要注意的,第一,形参与实参是单向传递的,第二,无论形参变量如何修改,绝对不会改变实参表达式原本的值,在堆栈系统里面,先从右向左依次计算出值,并放入系统堆栈,先将实参入栈,再将形参入栈,栈底指针执行主函数之后回落,在执行子函数的时候立即移到栈顶的位置,栈顶以上赋值给函数的局部变量,这就是正负的地址编号的由来。
在一个程序里面函数的声明和函数的定义都是形参变量的产生过程,对于底下的main主函数的调用里面不会改变形参的值,反之,对于形参变量的改变也无法在实参表达式里面直接体现,就像改变上述形参,但是实参变量在上一次的运算中已经赋值过了,这次改变形参变量并不会改变实参变量的值,照此输出还是会输出原来实参变量值,呢么这种问题也是有解决办法的
在一个程序中如果想要改变实参变量的值,可以改变指针和取地址,在形参变量里面定义一个指针变量,在底下的实参中&即可在修改实参的同时,修改实参变量了,这个过程我还是需要很多时间去理解和练习,否则很容易出错,还有对于堆栈系统的“保护现场”有很多的疑惑,比如说它到底是在堆栈系统的哪一个位置,产生之后什么时候进行调用,这就是我对本周课的全部理解和认识,还有问题。