close
這指的是資料類型,就是變數的類型,而變數是用來存資料的
基本上 C 語言有四個主要的基本類型 char, int, float, double。char 有一個byte, 常用來存放一個ASCII字元,int 則是四個byte的整數,包括一個正負號,所以範圍是,正負2的32次方,也就是大約正負20億左右,float 用來放浮點數,double 是用來存放更精確的整數。另外還有unsinged int, long , long long 等各種型別,用來存放【字元】【整數】【正整數】【浮點數】(不同精度的)等資料。(請參閱子章節【C資料類型資料參考】)(註:在 Obj-C 中,我們經常會使用更多的資料類型,以加速開發的時間,如 NSString 的字串類型等)
不過這一節的重點,並不是認識不同的資料,而是了解一下變數的本質
例:
int x;
x=100;
NSLog(@" x=%i",x);
對我們來說是建立了一個變數,變數的名稱叫做 x,而內容放入了 100, 最後將它輸出
而其中我們更該注意的是,int 使用了 4 個byte 也就是電腦保留了 4 個 byte, 而把100 這個數字,轉成對應格式的 4 byte 資料,放到這 4 byte中。不管你存 100 還是 10,00,000 它都是存在這 4 個byte 中,向電腦要了記憶體保留,也有保留位置是在那兒的相關資訊。
宣告變數,就是向系統要求保留記憶體空間的程序
宣告不同的型式的變數,所佔的空間大小也不一樣如 char 為 1 byte, double 為 8 byte等。
另外還有一種情形是宣告時會有兩個空間會保留,一個是保留來存的記憶體實際位置的空間,另外一個就是存放資料實際資料,這種情形叫指標變數,在C語言中常用於陣列或結構體,但在Objective-C中,幾乎都是指標變數。
另外還有一種情形是宣告時會有兩個空間會保留,一個是保留來存的記憶體實際位置的空間,另外一個就是存放資料實際資料,這種情形叫指標變數,在C語言中常用於陣列或結構體,但在Objective-C中,幾乎都是指標變數。
即然宣告變數就是向系統要求保留記憶體位置,那要保留到什麼時候呢?這就要看變數宣告的位置了。
變數可以宣告在 main() 之前, 稱為全域變數,全域變數的生命周期是靜態分配的的,也就是說,它會保留到程式結束為止,而大多數變數的宣告都會寫在程式中的變數都寫在 function 中,這時記憶體會保留到 Satck 結束為止,一個簡單判別方法就是到 { }區斷結束為止。
我們在第 11 行建立了一個全域變數,值為100,執行到 16 行時已進入了main()的 stack,做第一次輸出,但尚未宣告main()的stack 變數i, 所以 i 的值為 100, 到了第 18行時,已做宣告,所以 i 的值為 200,到第21行時輸出的是 if(TRUE)的 stack 內的變數 i 為 300,23行時,因已離開 if 的 stack 所以輸出 main() 的 stack 中的 i 值為 200,最後呼叫 print_i() function ,對其他 function 來說,只能讀到全域變數 i ,值為 100。
文章標籤
全站熱搜
留言列表