广州市建设工程造价站网站,网站挂百度广告,网站怎么修改模板内容,南京公司网站建设首先了解一下任意两个函数之间进行调用的情况:
比如在a函数里面调用b函数#xff0c;那么在使用b函数之前#xff0c;计算机还会1.把实参#xff0c;返回地址给复制下来#xff08;但只是复制而已#xff0c;地址不是原来的。#xff09;如图#xff1a; 此外2.为被调用…首先了解一下任意两个函数之间进行调用的情况:
比如在a函数里面调用b函数那么在使用b函数之前计算机还会1.把实参返回地址给复制下来但只是复制而已地址不是原来的。如图 此外2.为被调用的函数b的局部变量分配空间。 3.将控制转移到被调用函数b的入口
执行完毕后计算机会保存计算结果释放数据空间再依照原来保存的返回地址传值。
以上我们可以看出当多个函数调用的时候顺序实际上是“后运行的先出结果”这符合栈的工作原理“后进先出”由此我们也可以明白递归函数是刚刚所说的 多个函数互相调用的特例。因为语句一样。递归工作栈
对于特例我们具体展开来看主函数作为地1层
为保证递归函数的正确进行系统会设立一个“递归工作栈”作为递归函数运行期间的数据存储区每进入一层函数就将数据包括所有实参局部变量 和 上一层的返回地址放在栈顶
将当前执行层的工作记录也叫栈顶工作记录称为“活动记录”。
关于返回地址除了最外层的地址外每个n-1层的地址都一样。因为分别对应着栈底指针和栈顶指针。