1. 程式人生 > >記憶體區域的分類及對各變數

記憶體區域的分類及對各變數

一、
記憶體區域的分類:棧、堆、全域性(靜態)變數區、程式碼段

棧:區域性變數、函式呼叫,系統自行管理,不大
堆、動態記憶體,需要程式設計師自行管理,很大
全域性(靜態)變數區:全域性變數、靜態變數
程式碼段:函式的程式碼

二、變數的總結
如下表所示
在這裡插入圖片描述

下面給一個例題;

static int j;
void fun1(void)
{
static int i=0;
i++;
}
void fun2(void)
{
j=0;
j++;
}

int main()
{
int k=0;
for(k=0;k<10;k++)
{
fun1();
fun1();
}

return 0;
}

請考慮一下,i和j的值分別是什麼?為什麼?

分析如下:

j是靜態全域性變數,每次被函式fun2()呼叫,都會被初始化,因此j是1;
i是靜態區域性變數,只在本函式中有效,只初始化一次,並且函式結束不會被銷燬,因此I的值是10

答案:i=10 ;j=1