当一个函数在运行时,如需要调用另外一个函数或者该函数本身,则需要进行以下三个操作
1.将运行函数的所有参数、值以及返回地址传递给被调函数保存
2.为被调函数的局部变量分配内存空间
3.将控制转移到被调函数的入口地址
调用完函数后需要返回到原运行函数也需要以下三个操作
1.保存被调函数的返回值
2.释放被调函数占用的动态存储空间
3.按照被调函数调用时保存的返回地址将控制转移到调用函数
函数的调用通过压栈和出栈完成,每当调用函数时就将被调用的函数放在当前栈的栈顶。
正在运行的函数始终位于栈的栈顶。