#include <stdio.h>
const int str[1000] = {0};
int main(void)
{
printf("arr is %d\n", str[0]);
return 0;
}
具有以下的输出:声明为“const”的全局初始化变量转到文本段,而声明为“Static”的全局变量转到数据段。为什么?
[-exercises/adam/stack2]:size a.out
text data bss dec hex filename
5133 272 24 5429 1535 a.out
鉴于:
#include <stdio.h>
static int str[1000] = {0};
int main(void)
{
printf("arr is %d\n", str[0]);
return 0;
}
具有以下的输出:
[-exercises/adam/stack2]:size a.out
text data bss dec hex filename
1080 4292 24 5396 1514 a.out
当阵列未初始化 - 它再次进入文本段为“const”,BSS为“静态”。
该变量是全局变量,应该可以从它所属的可执行文件中的任何地方访问(因为没有“静态”),但给定了变量,我不知道它为什么放在文本段而不是数据中分割?
+1:好问题。你可能想把它扩展到'static const'。 – Arun 2010-10-17 17:49:27