#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怎么理解,会不会冲突?
小弟先谢谢各位大侠!
笔试归来的遗憾!