1. 程式人生 > >c語言提高篇(一)

c語言提高篇(一)

  我接觸c語言有一段時間了,之前把c語言的語法弄得滾瓜爛熟,但是還不敢說自己懂c語言,老感覺自己摸不透c語言,但是經過這一段時間的學習,我覺得c語言有了很大的進步,在此我會慢慢總結我對c語言深層次的理解。作為自己的學習筆記,同時也可以供大家來學習
  c語言是除了組合語言外最底層的語言,所以比起c++,java等語言外,c語言更接近機器的底層硬體。在此基礎上,我們再往層次去想,我們編寫的程式是在記憶體中去執行的,所以要更加懂c語言,就要知道c語言中的程式是如何在計算機記憶體中分佈的。這一次就說說c語言的變數。
1.變數的定義:我們在定義c語言變數的時候,我們要定義變數的型別和變數的名字,這兩個是最基本的要求。有沒有人想過為什麼有這樣的要求呢?首先,變數的型別代表著這個變數所佔記憶體的大小,如果沒有型別,那麼如何區分int型別是佔4個位元組,char型是佔1個位元組呢?其次是變數的名字,變數的名字代表著這個變數在記憶體中的地址,其實可以理解為變數的名字就是一個指標,這個指標指向這個變數
2.變數的生命週期:生命週期指的是這個變數在程式中作用的時間。區域性變數只能在函式中作用,當那個函式返回後,那個變數的記憶體就會被釋放,變數就不會再存在。全域性變數在整個程式的執行都能起作用。那麼能不能讓區域性變數也能在整個程式執行時都能起作用呢?只要加個static關鍵字就可以
3.變數的作用域:作用域指的是變數的作用範圍。全域性變數的作用範圍是全域性變數下面的區域,而區域性變數作用的範圍是函式內部這個變數下面的區域。
4.變數的連結屬性:連結屬性指的是在本c檔案中的變數能不能再另外一個c檔案中呼叫。首先說明,只有全域性變數才具有被別c檔案呼叫的可能性(包括static修飾的區域性變數),在別的檔案呼叫該變數時,要加static修飾
5.變數的儲存區間:在編譯時,編譯器會幫我們程式劃分一定的區域,有程式碼段(程式放的地方),資料段(全域性變數放的地方),堆疊區(區域性變數存放的地方)