| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 770 人关注过本帖
标题:笔试归来的遗憾!
只看楼主 加入收藏
Cking
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-9-23
收藏
 问题点数:0 回复次数:9 
笔试归来的遗憾!

#include "stdio.h"
int a=0;
int b;
//int f;------1
static char c;
int main()
{
char d=4;
static short e;
// int f;-------2
a++;
b=100;
c=(char)++a;
e=(++d)++;
printf("a=%d, b=%d, c=%d, d=%d, e=%d\n", a,b,c,d,e);
return 0;
}

这是我今天去笔试的题。请问编译器是如何安排各个变量(a,b,c,d,e)在内存中的布局(eg. stack,heap,data section, bss section).

我先说说我的理解:
1 内存分为:1程序区;2静态存储区;3动态存储区;
2 动态存储区里有栈和堆,局部变量都是在动态存储区里;
3 静态存储区里可以存全局变量和静态便量。那常量是在静态存储区吗?

4 我最后写d,e属于stack。a,b,c处于data section.其实我不知道什么是data section 和bss section.

5 最后我在问一个问题,如果再加上f,那1和2怎么理解,会不会冲突?

小弟先谢谢各位大侠!

搜索更多相关主题的帖子: 笔试 遗憾 
2007-10-17 22:55
aoaoaoao
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-5-14
收藏
得分:0 

a在data section

b,c,e放在bss section

d在stack中


1 f在 bss section 中
2 f 在stack中 在main函数内只有2f有效

2007-10-17 23:41
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:0 
我笔的百度
跟我的题不一样
楼主笔的什么???

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2007-10-18 00:15
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:0 
话说楼主这道题和上周微软笔试的一道选择题好像啊。。。。

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2007-10-18 00:16
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
楼上的两位可以稍微介绍一下这个内存分配的原则吗?
我在网上查了一下,好像是说,全局变量未初始化的,放在bss section,初始化了的,放在data section
看2楼的说法,局部变量放在stack,未初始化的局部静态变量,也放在bss section

我这样理解对吗?heap里面放什么?

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-18 08:55
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
另外,这个跟编译器有关吗?我用vc把他们的地址输出,全局变量好像是挨在一起放的

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-18 08:56
Cking
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-9-23
收藏
得分:0 
以下是引用aoaoaoao在2007-10-17 23:41:51的发言:

a在data section

b,c,e放在bss section

d在stack中


1 f在 bss section 中
2 f 在stack中 在main函数内只有2f有效


非常感谢您!
1f和2f是不是通过定义的位置来区分?
还有我对定义和声明这两个名次不太理解:(int a;)和(int a=1;)有什么区别?


2007-10-18 10:44
Cking
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-9-23
收藏
得分:0 
以下是引用succubus在2007-10-18 0:15:59的发言:
我笔的百度
跟我的题不一样
楼主笔的什么???

凹凸电子,软件职位!


2007-10-18 10:45
Cking
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-9-23
收藏
得分:0 
以下是引用永夜的极光在2007-10-18 8:55:38的发言:
楼上的两位可以稍微介绍一下这个内存分配的原则吗?
我在网上查了一下,好像是说,全局变量未初始化的,放在bss section,初始化了的,放在data section
看2楼的说法,局部变量放在stack,未初始化的局部静态变量,也放在bss section

我这样理解对吗?heap里面放什么?

heap 是用哦new,malloc,alloc,realloc动态分配的。alloca在栈里分配。


2007-10-18 10:46
Cking
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-9-23
收藏
得分:0 

1-常量
2-未初始化的静态变量、全局变量
3-初始化的静态变量、全局变量

根据朋友们的解释,2存在静态存储区的bss section里面,3存在静态存储区的data section里面。那1存在静态存储区的那个段上,bss section or data section?

再一次感谢各位朋友的帮忙,谢谢啊!


2007-10-18 10:50
快速回复:笔试归来的遗憾!
数据加载中...
 
   



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

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