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', '', '