C语言中,函数调用是通过栈实现的,怎样理解这句话?

能不能把过程详细的说下?... 能不能把过程详细的说下? 展开
 我来答
蜻蜓点水bai236
2013-11-27 · TA获得超过2387个赞
知道大有可为答主
回答量:2653
采纳率:66%
帮助的人:1222万
展开全部
因为函数调用的时候,就要将关键的寄存器的值存入堆栈中,等到执行完之后又从堆栈中取出数据
,计算机底层,有cs和ip的指令指针,指向哪里就执行哪里的指令,但是函数调用会人为的把cs和ip改变, 从而改变了指令执行的位置,自然去执行调用的函数了,但是此时,还是要将关键的寄存器存入堆栈,比如cs,等到调用玩之后,就又从堆栈中取出关键的寄存器的值,cs,ip还有别的一些
尤其是递归函数
百度网友a1e531d
2015-10-22 · TA获得超过1010个赞
知道小有建树答主
回答量:744
采纳率:50%
帮助的人:312万
展开全部
在一个函数中调用另一个函数,会将当前状态入栈,等执行完下一个后出栈,恢复状态继续往下执行
例:
int myfun()//假如指向到此函数
{
...
myfun1(); //调用myfun1函数,那我之前的变量怎么办?入栈保存,然后跳转到函数myfun1
....
}
int myfun1()
{
myfun2(); //又要调用新的怎么办,入栈保存现有变量,然后进入myfun2
}
int myfun2()
{
return 0; //运行完myfun2,终于返回了。然后回到myfun1,保存的变量出栈,继续执行myfun1
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fk...n@21cn.com
2013-11-27 · 超过12用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:34.7万
展开全部
这关系到内存的问题
首先内存分为五大部分,栈,堆,全局区,常量区,代码区,
函数的调用是在栈里进行的,首先函数压栈,然后栈里存储函数的局部变量等,进行运算,
等函数结束,函数出栈,就这样了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cqpcy
2013-11-27 · TA获得超过658个赞
知道小有建树答主
回答量:746
采纳率:66%
帮助的人:361万
展开全部
在一个函数中调用另一个函数,会将当前状态入栈,等执行完下一个后出栈,恢复状态继续往下执行
例:
int myfun()//假如指向到此函数
{
...
myfun1(); //调用myfun1函数,那我之前的变量怎么办?入栈保存,然后跳转到函数myfun1
....
}
int myfun1()
{
myfun2(); //又要调用新的怎么办,入栈保存现有变量,然后进入myfun2
}
int myfun2()
{
return 0; //运行完myfun2,终于返回了。然后回到myfun1,保存的变量出栈,继续执行myfun1
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式