static的作用以及實驗

1、靜態局部變量
普通的局部變量在棧空間上分配,這個局部變量所在的函數被多次調用時,每次調用這個局部變量在棧上的位置都不一定相同。局部變量也可以在堆上動態分配,但是記得使用完這個堆空間後要釋放之。

static局部變量中文名叫靜態局部變量。它與普通的局部變量比起來有如下幾個區別:

位置:靜態局部變量被編譯器放在全局存儲區.data(注意:不在.bss段內,原因見3),所以它雖然是局部的,但是在程序的整個生命週期中存在。

訪問權限:靜態局部變量只能被其作用域內的變量或函數訪問。也就是說雖然它會在程序的整個生命週期中存在,由於它是static的,它不能被其他的函數和源文件訪問。

值:靜態局部變量如果沒有被用戶初始化,則會被編譯器自動賦值爲0,以後每次調用靜態局部變量的時候都用上次調用後的值。這個比較好理解,每次函數調用靜態局部變量的時候都修改它然後離開,下次讀的時候從全局存儲區讀出的靜態局部變量就是上次修改後的值。

static的作用是保持變量內容的持久。存儲在靜態數據區的變量會在程序剛開始運行時就完成初始化,也是唯一的一次初始化。


  1 #include <stdio.h>
  2 void main()
  3 {
  4     while(1)
  5     {
  6         static int a=0;
  7         printf("a=%d\n",a);
  8         a=1;
  9         sleep(10);
 10     }
 11 }
~            

運行結果!這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章