c语言 变量在定义时就会分配空间么,那这样的话定义函数时形参怎么不是,难道说形参不是定义而是声明,

如果是声明的话为什么会在调用时分配空间,我勒个去我主要想知道自动变量定义时分配空间了么,(静态的肯定立即就分配了,对吧)求指错... 如果是声明的话为什么会在调用时分配空间,我勒个去
我主要想知道自动变量定义时分配空间了么,(静态的肯定立即就分配了,对吧)求指错
展开
 我来答
风若远去何人留
2013-05-22 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450134
专业C/C++软件开发

向TA提问 私信TA
展开全部
定义的时候就会分配 不过分配和释放的周期不同
比如全局变量,程序开始时就分配,只要程序不退出,空间就不会被释放
局部变量,函数调用时分配,函数退出时释放
形参同样要分配空间的,除非是C++的引用形参。
你可以试试调用一个函数时,打印形参和实参的地址,是不一样的
追问
我在main()中定义int a;我不用函数调用它,难道就不分配?求讨论
百度网友83cdc1c
2013-05-22 · TA获得超过5792个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:859万
展开全部
楼主,变量定义属于编译范畴。变量的内存分配属于运行范畴。
形参和局部变量都是在函数压栈过程中分配空间的。
main下的变量int a,它也是main函数的局部变量,也是在main函数压栈的时候在栈里分配的空间。
更多追问追答
追问
压栈是在编译过程中?,运行不是编译成可执行代码后进行的么,
追答
压栈是运行过程中。程序不运行,它只是一堆指令加标识符加常量,只有运行起来才会分配具体内存来存放变量等内容。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式