大家好我是技術(shù)男老張,今天給大家分享的內(nèi)容是“數(shù)據(jù)類(lèi)型”相關(guān)的內(nèi)容,希望通過(guò)本文的內(nèi)容能夠幫助你快速的理解和掌握基本數(shù)據(jù)類(lèi)型、構(gòu)造數(shù)據(jù)類(lèi)型的相關(guān)知識(shí)點(diǎn)。首先聲明本人不是寫(xiě)書(shū)的專(zhuān)業(yè)人士,本人就是理工男一枚,文筆水平一般,難免會(huì)出現(xiàn)錯(cuò)別字或語(yǔ)法結(jié)構(gòu)不通的情況,請(qǐng)大家多多理解和包容。
上一篇文章介紹了【函數(shù)調(diào)用】相關(guān)知識(shí)點(diǎn),感興趣的可以點(diǎn)擊下方連接:
零基礎(chǔ)跟我學(xué)C語(yǔ)言【2】—— 理解函數(shù)的調(diào)用
在講解新內(nèi)容之前,我們先來(lái)總結(jié)一下,前一篇文章的知識(shí)點(diǎn)有如下內(nèi)容:
函數(shù)體的執(zhí)行流程。
注釋符的使用及規(guī)則。
什么是直接遞歸調(diào)用。
什么是間接遞歸調(diào)用。
直接遞歸調(diào)用與間接遞歸調(diào)用的區(qū)別。
遞歸的終止條件在直接和間接遞歸調(diào)用中的區(qū)別。
?一、基本數(shù)據(jù)類(lèi)型
我們先來(lái)看一下基本數(shù)據(jù)類(lèi)有哪些,如下圖:

上圖展示了C語(yǔ)言全部的 基本數(shù)據(jù)類(lèi)型 ,那么很多朋友可能會(huì)問(wèn),干嘛要搞這么多類(lèi)型,有何用,有何區(qū)別?下面我會(huì)大家慢慢講解這些知識(shí)點(diǎn)之前,在講解之前 大家要牢記如下幾點(diǎn):
1. 數(shù)據(jù)類(lèi)型只是關(guān)鍵字且不占用存儲(chǔ)空間;
2. 數(shù)據(jù)類(lèi)型的作用是用于定義變量的存儲(chǔ)方式;
3. 數(shù)據(jù)類(lèi)型定義的變量分配的存儲(chǔ)空間是內(nèi)存空間而不是磁盤(pán)空間;
4. 數(shù)據(jù)類(lèi)型不同其定義變量的值,所存儲(chǔ)的數(shù)值范圍也會(huì)不同。
5. 數(shù)據(jù)類(lèi)型分為:基本類(lèi)型、構(gòu)造類(lèi)型、指針類(lèi)型 。
我們看上圖發(fā)現(xiàn)不同的類(lèi)型其長(zhǎng)度(字節(jié))會(huì)有所不同,下面我們講一下什么是字節(jié), 字節(jié)是數(shù)據(jù)存儲(chǔ)的一個(gè)單位,一個(gè)字節(jié)等于8個(gè)bit(位),bit 是最小的存儲(chǔ)單位。而bit 只能存儲(chǔ)一個(gè)狀態(tài)(這個(gè)狀態(tài)要么真要么假)。了解完字節(jié)是個(gè)什么東東后,我們可以搞清楚上圖中長(zhǎng)度(字節(jié))的概念了。說(shuō)明:bool類(lèi)型上圖沒(méi)有說(shuō)明其長(zhǎng)度(字節(jié)),實(shí)際上bool類(lèi)型也是占用一個(gè)字節(jié)的存儲(chǔ)空間。
我們接著說(shuō)取值范圍是什么意思,簡(jiǎn)單理解就是 取值范圍 就是當(dāng)前類(lèi)型可以存儲(chǔ)的數(shù)值范圍。比如上圖的bool 類(lèi)型 取值范圍就是 true或false,啥時(shí)真假?真假簡(jiǎn)單理解就是兩個(gè)狀態(tài) 0或1,這樣理解就好。
接下來(lái)我們探討一個(gè)問(wèn)題,我用長(zhǎng)度為2個(gè)字節(jié)的類(lèi)型 會(huì)比 用長(zhǎng)度為4個(gè)字節(jié)的類(lèi)型節(jié)省內(nèi)存空間嗎?對(duì)于這個(gè)問(wèn)題 可能會(huì)節(jié)省空間也可能不會(huì)節(jié)省空間。為什么會(huì)這樣說(shuō),是因?yàn)槟芊窆?jié)省內(nèi)存空間不僅僅是類(lèi)型長(zhǎng)度決定的還要和內(nèi)存是否 邊界對(duì)齊 有關(guān),簡(jiǎn)單理解就是,如果邊界對(duì)齊那么一次內(nèi)存讀取只能4個(gè)字節(jié)那么就算我們用的類(lèi)型是2個(gè)字節(jié),但是對(duì)內(nèi)存來(lái)說(shuō)浪費(fèi)了2個(gè)字節(jié)的空間,也就是用了4個(gè)字節(jié)的內(nèi)存空間。我好像話(huà)題扯的有點(diǎn)遠(yuǎn)了...., 接下來(lái) 我們繼續(xù)說(shuō)上圖沒(méi)有說(shuō)到的內(nèi)容,上圖中 “說(shuō)明 "這一列的內(nèi)容不夠細(xì)致,為了便于更好理解和掌握,詳細(xì)說(shuō)明如下:
布爾型(bool):
長(zhǎng)度 1個(gè)字節(jié),這個(gè)類(lèi)型定義的變量只能接受 true(1) 或 false(0) ,其他都不接受。
字符型(char):
長(zhǎng)度 1個(gè)字節(jié),這個(gè)類(lèi)型可不要從字面理解是存儲(chǔ)字符的哦,這個(gè)類(lèi)型雖然叫字符類(lèi)型,但是理論上是可以存儲(chǔ) -128 ~ 127 這個(gè)范圍的任何數(shù)值,有些編譯器是支持 char i = 5; 這樣的賦值。 這個(gè)要搞清楚 免得被他人嘲笑 哈哈哈。
無(wú)符號(hào)字符型(u char):
長(zhǎng)度 1個(gè)字節(jié),這個(gè)類(lèi)型只能存儲(chǔ)非負(fù)數(shù)的值,可以存儲(chǔ) 0 ~ 255 這個(gè)范圍的任何數(shù)值。
短整型(short):
長(zhǎng)度 2個(gè)字節(jié),這個(gè)類(lèi)型只能存儲(chǔ)整數(shù)的數(shù)值,但是存儲(chǔ)的范圍比較短,可以存儲(chǔ)負(fù)數(shù)或整數(shù)。
無(wú)符號(hào)整型(u short):
長(zhǎng)度 2個(gè)字節(jié),和短整型的區(qū)別是這個(gè)類(lèi)型不能存儲(chǔ)負(fù)值。非負(fù)數(shù)的存儲(chǔ)范圍要大于短整型。
整型(int):
長(zhǎng)度 4個(gè)字節(jié), 和短整型的唯一區(qū)別是 多了2個(gè)字節(jié),相當(dāng)于大卡車(chē)級(jí)別,短整型就是小貨車(chē) 哈哈哈。
無(wú)符號(hào)整型(u int):
長(zhǎng)度 4個(gè)字節(jié),和整型的區(qū)別是這個(gè)類(lèi)型不能存儲(chǔ)負(fù)值,也是大卡車(chē)級(jí)別的。
長(zhǎng)整型(long):
長(zhǎng)度也是4個(gè)字節(jié) 和 整型(int)? 屬性一樣,但是long類(lèi)型在其他語(yǔ)言環(huán)境中可能長(zhǎng)度會(huì)大于int,我們不要以為 和 int 屬性一樣就認(rèn)為多余哦。
無(wú)符號(hào)長(zhǎng)整型(u long):
長(zhǎng)度也 4個(gè)字節(jié),和 無(wú)符號(hào)整型(u int) 屬性一樣,在其他語(yǔ)言環(huán)境中長(zhǎng)度可能會(huì)大于 uint 類(lèi)型。
單精度型(float):
長(zhǎng)度 4個(gè)字節(jié),用于存儲(chǔ)浮點(diǎn)類(lèi)型的值,但是肚子小裝不了太多東西。
雙精度型(double):
長(zhǎng)度 8個(gè)字節(jié),用于存儲(chǔ)浮點(diǎn)類(lèi)型的值,這個(gè)肚子大,單精度型裝不下的時(shí)候這哥們就派上用場(chǎng)了。
二、構(gòu)造類(lèi)型
構(gòu)造類(lèi)型主要包括:枚舉類(lèi)型(enum )、數(shù)組類(lèi)型(array)、結(jié)構(gòu)類(lèi)型(struct)、聯(lián)合類(lèi)型(union)。
1. 枚舉類(lèi)型簡(jiǎn)介
下面我們先來(lái)了解枚舉類(lèi)型,枚舉類(lèi)型關(guān)鍵字是 enum ,下面代碼我們使用了enum 關(guān)鍵字定義了的對(duì)象 boolean ,這個(gè) color 對(duì)象 有兩個(gè)成員分別是 red 和 green 。
enum color { red, green};
細(xì)心的朋友可能會(huì)發(fā)現(xiàn) 我把 color 叫做對(duì)象,而不是以往的叫法 變量,這是因?yàn)?color 屬于 構(gòu)造類(lèi)型且成員類(lèi)型都是常量,color 對(duì)象后面 { } 內(nèi)包裹的就是它的成員,成員之間用逗號(hào)分隔。上面的代碼中 color 對(duì)象的成員是 red 和 green。這玩意兒 有啥用?簡(jiǎn)單理解就是為了提高代碼的可讀性和可維護(hù)性。
下面說(shuō)一下枚舉類(lèi)型的幾個(gè)關(guān)鍵點(diǎn):
enum 是關(guān)鍵字, 定義的對(duì)象是枚舉類(lèi)型,成員是常量不是變量。
對(duì)象成員是常量 其成員的默認(rèn)值,從左到右遞增且初始數(shù)值為 整數(shù) 0。
對(duì)象成員的初始值只可以在定義過(guò)程中設(shè)置,例如:enum color { red=2, green=6};
2. 枚舉類(lèi)型的使用
我們先來(lái)看下面的代碼
enum color { red, green};
int main () {
? ? enum color mycolor;
? ? mycolor = green; // mycolor 賦值為 green;
? ? return 0;?
}
這段代碼 在 main 函數(shù)體內(nèi) 定義了 枚舉類(lèi)型變量 mycolor, 大家注意此刻?mycolor是變量而不是常量。接著我們給變量 mycolor 賦值為 green, 此刻?mycolor的值 就是?green。有的朋友可能有疑問(wèn) 能否把?blue 賦值給?mycolor ?答案肯定是不行的,因?yàn)?color的成員沒(méi)有 blue,所有我們得到的結(jié)論是 給 mycolor 賦值只能是 存在的成員。
好了,今天內(nèi)容的分享就到這里,有不理解的朋友可以在底部留言,下一篇文章會(huì)給大家分享”構(gòu)造類(lèi)型之結(jié)構(gòu)體“的相關(guān)內(nèi)容 。感謝大家的支持!?