目錄變數程式的本質:二進位文件1.變數:記憶體上的某個位置開闢的空間2.變數的初始化:3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地址1.1 關鍵字auto1.2 關鍵字register什麼樣的變數可以採用register? 變數 程式 ...
目錄
變數
程式的本質:二進位文件
運行程式,即將程式中的數據載入到記憶體中運行
為什麼要載入到記憶體? 1.馮諾依曼體系決定 2.快
1.變數:記憶體上的某個位置開闢的空間
因為變數都是程式運行起來才開闢的
2.變數的初始化:
變數的空間被開闢後,就應當具有對應的數據,即必須要初始化.表示該變數與生俱來的屬性就是該初始值
3.為什麼要有變數
電腦是為瞭解決人計算能力不足的問題而誕生的.即,電腦是為了計算的.
而計算,就需要數據
而要計算,任何時刻,不是所有的數據都要立馬被計算,因此有的數據需要暫時被保存起來,等待後續處理. 所以需要變數
4.局部變數與全局變數
- 局部變數:包含在代碼塊中的變數叫做局部變數.局部變數具有臨時性.進入代碼塊,自動形成局部變數,退出代碼塊自動釋放. 局部變數在棧區保存
- 全局變數:在所有函數外定義的變數,叫做全局變數.全局變數具有全局性.全局變數在全局已初始化數據區保存.
- 代碼塊:用花括弧{}括起來的區域,就叫做代碼塊.
5.變數的大小由類型決定
6.任何一個變數,記憶體賦值都是從低地址開始往高地址
所以首地址和取地址永遠都是低地址
1.1 關鍵字auto
預設情況下,編譯器預設所有的局部變數都是auto的,auto一般只能用來修飾局部變數,不能修飾全局變數.ju'bu也叫自動變數.一般情況下都是省略auto關鍵字的.基本永不使用
1.2 關鍵字register
建議性關鍵字,建議編譯器將該變數優化到寄存器上,具體情況由編譯器決定
(不建議大量使用,因為寄存器數量有限)
什麼樣的變數可以採用register?
- 局部的(全局會導致CPU寄存器被長時間占用)
- 高頻被讀取的(提高訪問效率)
- 不會被寫入的(寫入就需要寫回記憶體,後續還需要讀取檢測的話,register就沒有意義了)
寄存器變數是不能被取地址的,因為不在記憶體中,就沒有記憶體地址
register不會影響變數的生命周期,只有static會影響變數的生命周期
本文來自博客園,作者:HJfjfK,原文鏈接:https://www.cnblogs.com/DSCL-ing/p/18414568