1. 程式人生 > >c語言區域性變數預設初始值

c語言區域性變數預設初始值

C語言中,定義區域性變數時如果未初始化,則值是隨機的,這是為什麼呢?

定義區域性變數,其實就是在棧中通過移動棧指標來給程式提供一個記憶體空間和這個區域性變數名繫結。因為這段記憶體空間在棧上,而棧記憶體是反覆使用的(髒的,上次用完沒清零的),所以說使用棧來實現的區域性變數定義時如果不顯式初始化,值就是髒的。

c語言中只有區域性變數在未賦初值時,才是隨機數,全域性變數和靜態變數未賦初值時編譯器會自動將其初始化為0。區域性變數是分配在堆疊上的,而全域性變數和靜態變數是分配在資料段中的。這個跟程式的記憶體分配是有關係的。