帮我解解这个问题,在c程序中定义函数的形参时,系统要不要对形参分配内存空间,说说你的理由!

 我来答
sailingzyf
2012-11-11 · TA获得超过1330个赞
知道小有建树答主
回答量:860
采纳率:0%
帮助的人:1061万
展开全部
形参只在这个函数执行的时候才会被分配内存,当函数执行完毕后分配的内存会被释放。至于理由……函数的参数属于局部变量,如果一开始就分配的话,别的地方也能访问修改,数据就不确定了。
另外,函数的形参实际是:调用此函数前,将实参压入堆栈,然后跳转到函数的地址执行。函数执行完跳回去时,堆栈弹出,内存释放。
linxxx3
2012-11-11 · 超过69用户采纳过TA的回答
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:184万
展开全部
C语言规定的形参传递的方法,称作cdecl,(应该是唯一的传参方式吧…),c程序的编译器需要遵守这个约定的规范,便于不同编译器函数的相互调用,具体规范是函数调用时,形参占用程序栈空间,参数从右到左入栈,被调函数清栈取出参数,即所谓cdecl调用方式。C++中有更多的调用方式,不需要分配内存,使用寄存器传递参数的方式称作fastcall,这种必定不能用于共享库函数。更详细的可以参考这个百科:http://baike.baidu.com/view/1280676.htm

所以可以总结说,c程序的形参传递使用cdecl,纯C编译器都会遵守,这种方式下形参在调用时存储在程序栈上,函数定义的时候,形参只是一个符号而已。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式