C語言

當前位置 /首頁/計算機/C語言/列表

C語言變數儲存佈局

C語言變數是怎麼儲存的大家瞭解嗎?下面一起去了解一下C語言變數儲存佈局是怎麼樣的吧,希望對大家有幫助!

C語言變數儲存佈局

1.正文段():機器指令部分,是隻讀的,防止意外的修改;

2.初始化資料段():儲存程式中的全域性變數且已被賦初值或在函式中被static修飾的且已被賦初值的變數;

3.未初始化資料段():儲存程式中的全域性變數且未被賦初值或在函式中被static修飾的且未被賦初值的變數,這些變數由核心賦初值0;

4.堆:通常由程式設計師進行申請,最後進行釋放;

5.棧:存放函式中的臨時變數,函式呼叫時給變數分配記憶體,函式釋放時釋放記憶體。

下面以實際的例子來分析變數儲存空間:

#include

const int A = 10;

int a = 20;

static int b = 30;

int c;

int main(void)

{

static int a = 40;

char b[] = "forward";

register int c = 50;

printf("Hello World %d", c);

return 0;

}

1.全域性變數A用const修飾,表示A是隻讀的`,不可修改,它的地址位於ta段;注意,像A這種const變數在定義時必須初始化。因為只有初始化時才有機會給它一個值,一旦定義之後就不能再改寫了,也就是不能再賦值了;

2.程式中的字串字面值"Helloworld%d"分配在ta段的末尾,字串字面值是隻讀的,相當於在全域性作用域定義了一個const陣列:

const char helloworld[] = {'H', 'e', 'l', 'l', 'o', ' ', 'w','o', 'r', 'l', 'd', ' ', '%', 'd', '', '