#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