当函数A在运行期间调用函数B时,在运行B函数之前,系统需要完成三件事:
- 将所有的实际参数,返回地址等信息传递给B函数保存
- 为B函数的局部变量(也包括形参)分配存储空间
- 将控制转移到B函数的入口
从B函数返回A函数之前,系统也要完成三件事。
- 保存B函数的返回结果
- 释放B函数所占用的存储空间
- 依照B函数保存的返回地址,将控制转移到A函数
注意1 (多个函数相互调用时按照后调用先返回的思想,借助栈来实现,每调用一个函数时就在栈顶分配一个存储区,进行压栈操作。每当一个函数退出时,就会释放存储区,就进行出栈操作,当前运行函数永远都在栈顶位置)
注意2(A函数调用A函数和A函数调用B函数在计算机看来是没用任何区别的)