| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2165 人关注过本帖
标题:main()函数中的变量(局部动态变量),编译阶段分配内存?
只看楼主 加入收藏
suishuhao
Rank: 2
等 级:论坛游民
帖 子:89
专家分:10
注 册:2012-9-25
结帖率:61.9%
收藏
 问题点数:0 回复次数:7 
main()函数中的变量(局部动态变量),编译阶段分配内存?
比如如下一个简单的求和程序:
#include<stdio.h>
void main()
{int a,b,c;
a=1;b=2;
c=a+b;
printf("%d\n",c);

}

main()函数中的a,b,c都是局部动态变量,都在栈存储区,我想问:给a,b,c分配地址的时候,是在编译阶段完成的吗?

当然,用户自己定义的函数中的形参和自定义函数中的变量也是栈变量,它们是在运行阶段动态分配的。

-------------------------------------------------------------------


[ 本帖最后由 suishuhao 于 2012-10-12 19:30 编辑 ]
搜索更多相关主题的帖子: 用户 动态 
2012-10-12 19:19
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
局部变量的内存也不是编译时候分配,是在运行时候调整一下esp而已,这块地址是栈上面的,编译时候怎么分配?
只是这个大小在编译时候就已经确定了的

你看一下汇编代码就知道了


[ 本帖最后由 yuccn 于 2012-10-12 19:25 编辑 ]

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-10-12 19:24
suishuhao
Rank: 2
等 级:论坛游民
帖 子:89
专家分:10
注 册:2012-9-25
收藏
得分:0 
以下是引用yuccn在2012-10-12 19:24:14的发言:

局部变量的内存也不是编译时候分配,是在运行时候调整一下esp而已,这块地址是栈上面的,编译时候怎么分配?
只是这个大小在编译时候就已经确定了的

你看一下汇编代码就知道了
谭浩强 《C程序设计》第三版 219页 第十章 说:在对程序编译时,系统会给这个变量分配内存单元
                           40页:每一个变量被指定为一个确定类型,在编译时就能为其分配相应的存储单元

谭浩强的书在内存管理、编译连接等方面讲的狠迷糊啊。。。。。。。。。





[ 本帖最后由 suishuhao 于 2012-10-12 19:45 编辑 ]
2012-10-12 19:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
谭书的说法是对的,你对“分配”的理解狭隘了而已。

授人以渔,不授人以鱼。
2012-10-12 22:17
行僧
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2012-10-10
收藏
得分:0 
顶版主一下
2012-10-12 23:28
虐尸专家
Rank: 1
等 级:新手上路
帖 子:12
专家分:7
注 册:2012-10-23
收藏
得分:0 
高手一般都会在里面添加void
2012-10-23 01:26
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用suishuhao在2012-10-12 19:27:38的发言:

谭浩强 《C程序设计》第三版 219页 第十章 说:在对程序编译时,系统会给这个变量分配内存单元
                           40页:每一个变量被指定为一个确定类型,在编译时就能为其分配相应的存储单元

谭浩强的书在内存管理、编译连接等方面讲的狠迷糊啊。。。。。。。。。

我觉得确实是这样 这也算谭老师书的一个缺点罢
2012-10-23 08:48
hgand
Rank: 2
等 级:论坛游民
帖 子:32
专家分:77
注 册:2012-10-17
收藏
得分:0 
像这些动态变量不会在编译里分配的!都是在调用当前函数时分配!函数执行完后又释放空间!
2012-10-23 10:59
快速回复:main()函数中的变量(局部动态变量),编译阶段分配内存?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016616 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved