大話嵌入式之一---變量


動態變量也就是很多書中提到的局部變量,是函數運行過程中申請的,生命週期隨着函數的開始而誕生,隨着函數的結束而消亡;是動態存在的。程序分配棧空間給局部變量使用;由於程序或者任務的棧空間的大小限制,所以不建議在函數中申請大量的局部變量,如大空間的數組;

靜態變量,可以包含有局部靜態變量用static修飾和全局變量,這種變量一旦定義不會消亡,和函數的生命週期無關;兩種靜態變量只是作用範圍不一樣,局部靜態變量只爲某個函數服務,而全局變量爲整個工程裏的所有函數服務;因此也有書本會說static會定義變量的作用域。程序分配堆空間給靜態變量使用。靜態變量的空間申請有兩種方式,一種是普通的定義方式由編譯器自行分配,還有一種通過malloc的方式,malloc會以void *的方式返回分配空間的首地址。爲什麼會以void *的方式返回,主要是因爲void *可以接收任何類型的指針變量,在使用時只需要進行強制類型轉換就可以。使得程序在編寫時不需要考慮類型匹配的問題;malloc的方式分配後,由於是靜態變量,因此程序結束不會消除,必須要通過free釋放申請的空間,由於堆空間也是有限的,因此malloc後,需要在功能結束的位置執行free;

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