IOS开发知识(二)
數(shù)據(jù)
什么是數(shù)據(jù)
生活中時時刻刻都在跟數(shù)據(jù)打交道,比如體重數(shù)據(jù)、血壓數(shù)據(jù)、股價數(shù)據(jù)等。在我們使用計算機(jī)的過程中,會接觸到各種各樣的數(shù)據(jù),有文檔數(shù)據(jù)、圖片數(shù)據(jù)、視頻數(shù)據(jù),還有聊QQ時產(chǎn)生的文字?jǐn)?shù)據(jù)、用迅雷下載的文件數(shù)據(jù)等。
數(shù)據(jù)的分類
計算機(jī)中存儲的數(shù)據(jù)可以分為兩種:靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)。
靜態(tài)數(shù)據(jù)
概念:靜態(tài)數(shù)據(jù)是指一些永久性的數(shù)據(jù),一般存儲在硬盤中。硬盤的存儲空間一般都比較大,現(xiàn)在普通計算機(jī)的硬盤都有500G左右,因此硬盤中可以存放一些比較大的文件。
存儲的時長:計算機(jī)關(guān)閉之后再開啟,這些數(shù)據(jù)依舊還在,只要你不主動刪掉或者硬盤沒壞,這些數(shù)據(jù)永遠(yuǎn)都在。
哪些是靜態(tài)數(shù)據(jù):靜態(tài)數(shù)據(jù)一般是以文件的形式存儲在硬盤上,比如文檔、照片、視頻等。
動態(tài)數(shù)據(jù)(臨時數(shù)據(jù))
概念:動態(tài)數(shù)據(jù)指在程序運(yùn)行過程中,動態(tài)產(chǎn)生的臨時數(shù)據(jù),一般存儲在內(nèi)存中。內(nèi)存的存儲空間一般都比較小,現(xiàn)在普通計算機(jī)的內(nèi)存只有4G左右,因此要謹(jǐn)慎使用內(nèi)存,不要占用太多的內(nèi)存空間。
存儲的時長:計算機(jī)關(guān)閉之后,這些臨時數(shù)據(jù)就會被清除。
哪些是動態(tài)數(shù)據(jù):當(dāng)運(yùn)行某個程序(軟件)時,整個程序就會被加載到內(nèi)存中,在程序運(yùn)行過程中,會產(chǎn)生各種各樣的臨時數(shù)據(jù),這些臨時數(shù)據(jù)都是存儲在內(nèi)存中的。當(dāng)程序停止運(yùn)行或者計算機(jī)被強(qiáng)制關(guān)閉時,這個程序產(chǎn)生的所有臨時數(shù)據(jù)都會被清除。
你可能會問:既然硬盤的存儲空間這么大,為何不把所有的應(yīng)用程序加載到硬盤中去執(zhí)行呢?有個主要原因是內(nèi)存的訪問速度比硬盤快N倍。
??????程序員最關(guān)心的是什么數(shù)據(jù)呢?
靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)的轉(zhuǎn)換
靜態(tài) -> 動態(tài) ?
動態(tài) -> 靜態(tài) ?
數(shù)據(jù)的大小
不管是靜態(tài)還是動態(tài)數(shù)據(jù),都是0和1組成的。0和1如何組成這么多的數(shù)據(jù)?
數(shù)據(jù)都有大小,靜態(tài)數(shù)據(jù)就會占用硬盤的空間,動態(tài)數(shù)據(jù)就占用內(nèi)存的空間
數(shù)據(jù)越大,包含的0和1就越多,比特位和字節(jié)
1 KB = 1024 B,1 MB = 1024 KB,1 GB = 1024 MB,1 TB = 1024 GB
???
?
C語言中的數(shù)據(jù)類型
由于app中的數(shù)據(jù)種類繁多,為了方便操作數(shù)據(jù),C語言數(shù)據(jù)進(jìn)行了分類
?
常量
什么是常量
常量,表示一些固定的數(shù)據(jù)
常量的分類
1> 整型常量(int)
包括了所有的整數(shù),比如6、27、109、256、-10、0、-289等
?
2> 浮點(diǎn)型常量(float\double)
浮點(diǎn)型常量分為double和float兩種數(shù)據(jù)類型
double:雙精度浮點(diǎn)型,其實就是小數(shù)。比如5.43、-2.3、0.0等(注意,0.0也算是個小數(shù))
float:單精度浮點(diǎn)型,也是小數(shù),比double的精確程度低,也就是說所能表示的小數(shù)位數(shù)比較少。為了跟double區(qū)分開來,float 型數(shù)據(jù)都是以f結(jié)尾的,比如5.43f、-2.3f、0.0f。需要注意的是,絕對不能有10f這樣格式的,編譯器會直接報錯,只有小數(shù)才允許加上f。
?
3> 字符常量(char)
? ? ? 將一個數(shù)字(0~9)、英文字母(a~z、A~Z)或者 其他符號(+、-、!、?等)用單引號括起來,這樣構(gòu)成的就是字符常量。比如'6'、'a'、'F'、'+'、'$'等。
注意:單引號只能括住1個字符,而且不能是中文字符,下面的寫法是錯誤的:'abc'、'123456'、'男'
?
4> 字符串常量
? ? ?將一個或者多個字符用雙引號("")括起來,這樣構(gòu)成的就是字符串常量。比如"6"、"男"、"哇哈哈"、"abcd"、"my_car4",其實printf("Hello World");語句中的"Hello World"就是字符串常量。
那究竟6、'6'、"6"在用法上有什么區(qū)別呢?這個先不作討論,以后會介紹。
變量
什么是變量
當(dāng)一個數(shù)據(jù)的值需要經(jīng)常改變或者不確定時,就應(yīng)該用變量來表示。比如游戲積分。
定義變量
目的
任何變量在使用之前,必須先進(jìn)行定義。
定義變量的目的是:在內(nèi)存中分配一塊存儲空間給變量,方便以后存儲數(shù)據(jù)。
如果定義了多個變量,就會為這多個變量分別分配不同的存儲空間。
格式
變量類型? 變量名;
比如int num;
變量名屬于標(biāo)識符
變量類型
不同類型的變量占用不同大小的存儲空間。內(nèi)存極其有限,分配適當(dāng)?shù)拇鎯臻g?
約束變量所存放的數(shù)據(jù)類型(方便運(yùn)算)
實例
int main()
?{
?? ? int i;
char c;
int a, b;
?? ? return 0; ? ?
?}
?
變量的使用
賦值
? ? ?往變量里面存點(diǎn)東西,就是賦值。賦值語句后帶個分號;
i = 10;
注意:這里的等號=,并不是數(shù)學(xué)中的“相等”,而是C語言中的賦值運(yùn)算符,作用是將右邊的常量10賦值給左邊的變量i
第一次賦值,可以稱為“初始化”
初始化的兩種形式
先定義,后初始化:int a;? a = 10;
定義的同時進(jìn)行初始化:int a = 10;
修改
可以修改變量的值,多次賦值。每次賦值都會覆蓋原來的值
i = 10;
i = 20;
變量i最后的值是20
使用printf輸出一個\多個變量的值
int a = 10, c = 11;
printf("a=%d, c=%d", a, c);
double\float\char的輸出,格式符的一些小技巧
double height = 1.55;
char blood = 'A';
printf("height=%.2f, 血型是%c",? height,? blood);
簡單的加減操作
int a = 10 + 20;
沒有初始化時不要拿來使用(下面的寫法是不建議的)
int score;
printf("score=%d", score);
變量之間值的傳遞,可以將一個變量的值賦值給另一個變量
int a = 10;
int b = a;
連續(xù)賦值
a = b = 10; ?
注意:變量使用時,同時進(jìn)行初始化,避免不必要的錯誤。
常見錯誤
變量名相同? int a = 10;? int a = 12;
變量的作用域不對
變量的創(chuàng)建和釋放過程
代碼塊作用域 {? int a = 10; }
交換整型變量a、b的值。比如a=10、b=11;交換之后a的值是11,b的值是10。用兩種方式實現(xiàn):
使用第三方變量
int temp;
temp = a;
a = b;
b = temp;
不使用第三方變量
a = b - a;
b = b - a;
a = b + a;
?
變量的內(nèi)存分析
字節(jié)和地址
????????為了更好地理解變量在內(nèi)存中的存儲細(xì)節(jié),先來認(rèn)識一下內(nèi)存中的“字節(jié)”和“地址”。內(nèi)存以“字節(jié)為單位”
不同類型占用的字節(jié)是不一樣的,數(shù)據(jù)越大,所需的字節(jié)數(shù)就越多
變量的存儲
所占用字節(jié)數(shù)跟類型有關(guān),也跟編譯器環(huán)境有關(guān)
?
變量實例
int?b =?10;
int?a =?20;
內(nèi)存由大到小尋址,優(yōu)先分配內(nèi)存地址較大的字節(jié)給變量。b的內(nèi)存地址比a大
每個變量都有地址:第一個字節(jié)的地址就是變量的地址
查看內(nèi)存地址:
int?a;
printf("a的地址是:%p\n", &a);
注意
在變量未經(jīng)初始化之前,不要嘗試使用變量的值
int?a;
printf("a的值是:%d\n", a);
上面的寫法是不建議的
轉(zhuǎn)載于:https://blog.51cto.com/11150655/1737598
總結(jié)
以上是生活随笔為你收集整理的IOS开发知识(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转载】JAVA内存模型和线程安全
- 下一篇: 深入浅出Node.js (2) - 模块