分析靜態儲存區、堆、棧:
靜態儲存區:編譯時由編譯器分配,由系統釋放,其存放在的是全域性變數、static變數和常量。
對:由程式設計師自己分配釋放,若不手動釋放程式結束才釋放。若對分配空間不用時不釋放而一味分配,則可能造成記憶體洩露,其容量取決於虛擬記憶體,較大。
區別:1)棧是由高位址向低位址擴充套件,堆是由低位址向高位址擴充套件;2)棧是連續空間,堆是不連續空間;3)申請空間時,棧的分配更快,堆則要變數找空閒儲存位址鍊錶,修改鍊錶,在進行分配,而棧則是只要空間夠用就可分配,不夠報棧溢位。4)靜態儲存區生命期最長,棧的生命期最短,到函式呼叫結束,堆生命期取決於程式設計師釋放時間。
指標與引用區別:
區別:1)指標是乙個實體,而引用僅是個別名;
2)引用使用時無需解引用(*),指標需要解引用;
3)引用只能在定義時被初始化一次,之後不可變;指標可以改變
4)引用沒有const,指標有const
5)引用不能為空,指標可以為空
6)「sizeof 引用」得到的是所指向變數(物件)的大小,而「sizeof 指標」得到的是指標本身(所指向的變數或物件位址)的大小
7)指標和引用的自增(++)運算意義不一樣
8)從記憶體分配上看:程式為指標變數分配記憶體區域,而引用不需要分配記憶體區域。
C語言知識總結
第一章 1 程式語言的發展 機器語言 組合語言 高階語言 2 軟體開發的基本步驟 分析問題,激勵數學模式 確定資料的結構和演算法 程式語言 除錯程式 3 演算法 特徵 有窮性 確定性 有效性 有零個或多個輸入 有乙個或多個輸出 分類 數值運算演算法和非數值運算演算法 4 編碼實現 a.編寫源 b.將...
C語言知識總結(一)
第一章 概述 1 c語言的基本知識 1.1 c語言的執行步驟 編輯 程式 的錄入,生成源程式 c 編譯 語法分析查錯,翻譯生成目標程式 obj 語法或邏輯錯誤,從第乙個開始改,變數定義,語句格式,表示式格式等 鏈結 與其他目標程式或庫鏈結裝配,生成可執行程式 exe 執行1.2 main函式的基本知...
c語言知識總結2
一維陣列的定義格式,型別說明符 陣列名 常量表示式 例如 int a 10 c語言中不允許對陣列的大小做動態的定義,即陣列大小不能用變數表示。一維陣列的陣列元素占用的位元組數為4個位元組。幾種錯誤寫法 float a 0 陣列元素大小為0沒有意義 int b 9 不能使用圓括號 int k,a k ...