c中的變數,從變數的作用域,即(從空間上,變數的使用範圍),可以分為全域性變數和區域性變數.
從變數值存在的時間(即生存期)來分,可以分為靜態儲存方式和動態儲存方式.
區域性變數:在乙個函式內部定義的變數,只在本函式內有效.需要注意的是:a>main函式中的引數也是區域性變數,不會因為在main函式中定義就對整個程式有影響.main也不能呼叫其它函式內部的變數.b>不同函式內的變數名可以相同,因為作用域不同.c>函式的形參也是區域性變數.d>塊中定義的變數,作用域只是這個程式塊.
全域性變數:函式體外定義的變數,作用域為定義位置開始一直到本原始檔結束.可以為本檔案中其它的函式所用.它是在編譯時分配的空間,在整個程式執行時,一直占用空間.a>設全域性變數是為了加強函式間的聯絡,乙個函式對全域性變數值進行修改,在下乙個呼叫的函式中能使用這個已改變的值.(全域性變數一般首字母大寫).少有的優點就是:減少函式實參與形參的個數,從而減少記憶體空間以及傳遞資料時的時間.大堆的缺點就是:一直占用記憶體空間,直到程式結束;函式間彼此依賴,但要求程式模組的功能單一,即**的可移植性強.還要注意到全域性變數被同名的區域性變數所遮蔽的問題.
-----傳說中華麗的分割線---------
變數的儲存類別
(一下給打成了儲存型別,仔細想了想型別與類別的區別,型別是不是乙個特定的所明了的類,就是指定為哪乙個類了,而類別只是羅列了所有的分類??有道理,應該如此!!)
靜態儲存方式:在程式執行期間分配的固定的儲存空間的方式.(是在執行期間,而沒有特意說明是在編譯時候,什麼變數在編譯時就給指定記憶體空間來著?這是個問題!!question)
動態儲存方式:在程式執行期間根據需要進行動態的分配儲存空間的方式.(呼叫函式時,給形參分配乙個臨時的空間,值傳遞的時候應該屬於這個情況吧.)
----等下再往下寫,怎麼不能插入了,我還想來個**並茂了,==,先上別人家看看的-------
資料放在靜態儲存區和動態儲存區中,全域性變數在---靜態區;在程式開始執行時給全域性變數分配空間,程式完畢再釋放.整個空間在執行期間不再改變,不進行動態的分配和釋放.
動態區:a>函式的形參,呼叫時給形參乙個臨時分配乙個空間(ms前面寫上了),b>自動變數(無static的變數,static是心頭大痛,曾經被人問到過,而我將它與全域性變數攪在一起!羞愧!!!所以現在先把此節寫上!)c>函式呼叫時的現場保護和返回位址等,(這個好像是很少碰到,只有在研究幾個表示式誰最優的時候,才會分析要不要返回位址和現聲保護,如x++; x+=1和x=x+1;),以上這些都是函式開始時給分配空間,函式呼叫結束釋放空間.--果然是同生共死型別..
question:如果在乙個程式中,乙個函式呼叫兩次,那麼形參的位址會不會相同?答案是相同的可能性是很低的,因為都是臨時分配,是沒有指定區域的.
新要點:在c中每乙個變數和函式都有兩個屬性:資料型別和資料儲存型別.資料型別,如int,floatt等,而資料儲存型別是資料在記憶體中的儲存方式,分兩個大類:靜態和動態,共4個,自動的(auto),靜態的(static),暫存器的(register)和外部的(extern).根據儲存類別可知變數的作用域和生存期.(ms作用域成附屬位置了,不用表明身份,跟在別人後面就知道是幹什麼的!!!)
C 中的變數
c 裡面已有的簡單資料型別有 32位機 整型 short 2個位元組 int 4個位元組 long 4個位元組 long long 8個位元組 浮點型 float 4個位元組 double 8個位元組 字元型 char 乙個位元組 其實我更願意將其理解成整型,因為字元就是ascii碼 0 127個整...
C 中的變數
1.全域性變數 函式外定義的變數叫全域性變數,當乙個程式由多個.cpp檔案構成的時候,在乙個.cpp檔案中宣告的全域性變數,在其他 cpp中使用時,需要加上extern說明語句。全域性變數預設置初始值為0。2.區域性變數 在函式體內或塊內定義的變數叫區域性變數。區域性變數在沒有明確賦初值的時候,其初...
c 中的變數
記憶體 使用者儲存正在執行的程式資料ram 隨即儲存器 斷電後裡面的資料丟失 變數代表這一塊記憶體空間,我們可以通過變數名稱向記憶體存 取資料.有變數就不需要我們記憶複雜的記憶體位址了.先向計算機申請一塊記憶體空間,考慮往內存放的資料的型別 向記憶體申請一塊記憶體空間的語法 資料型別變數名 整數在我...