C 語言數據類型意義解析

先給出一張書上關於數據類型的分類圖,其中對於指針類型和空類型做了不同的分類,具體原因請看下面的說明


關於C中的數據類型,個人的劃分方法是 分爲兩類,一類是基本類型(地址類型也是基本類型的一種),也就是語言本身所提供的,編譯器可以直接識別的。另一類就是組合類型(基本類型組合在一起)。


C語言給定數據類型的原因:

在用一個數據類型定義變量時,實際上也就是給定了三個信息,數據在內存中所佔的字節數,數據在內存中的首地址,數據在內存中存儲時的編碼方式。對比弱類型語言,他們的編譯器在保存這些數據的同時,必然會自動保存上面所說的三個信息。使用強數據類型的好處就是,一方面可以用編譯器來檢查數據,增加一定的安全性。也爲編譯器對之後的數據處理提供了很多的方便。

類型的詳細說明:

1、整型 intshortlong  最初是爲了節約內存空間而設計的,目前來看大部分情況下已經完全不必要了,定義變量時,最好是定義與機器字長一致的類型,不滿足條件時,才考慮範圍更大的類型。ps:補碼存儲

2、字符型:char 保存字符,不過其本質上是用ASCII 保存的整型。

3、浮點型:floatdouble對應實數類型,由於採用IEEE754 標準存儲(組成原理筆記中有詳細說明),所以在使用時應當注意精確度的問題,也就是說用==比較兩個實數時完全沒有意義的。

4、指針類型:也就是地址類型,32位系統中,指針類型數據固定佔4個字節,它指向的是一個地址空間。其他的所有意義(比如所指向空間可以保存的數據的類型)都是編譯器賦予它的,具體的編譯器語法,在指針一節詳細說明。

5、空類型:void,兩個問題,一是空類型是什麼? 二是 爲什麼要有空類型?

首先,空類型如果嚴格按照類型的定義來說,它並不是一種類型,而是編譯器可以自動識別的一種特殊情況,比如,返回值類型位空,就表示沒有返回值。那麼編譯器對函數的處理就達到了一種統一。空類型存在的原因是在一方面代表了“無”的狀態,另一方面,作爲空類型指針,它代表了“所有”的狀態,即所有類型的指針都可以直接賦值給空類型指針。int *p1 = null; void * p = p1; // OK

6、數組類型:相同類型的多個數據的集合。對應的是同類型數據的批量處理問題。

7、結構類型:有關聯的多個數據的集合。實際上它就是面向對象的雛形,也是數據庫,數據結構的基礎。

8、聯合類型:主要還是內存空間不足的情況下的產物,多個變量用同一段存儲空間存儲。目前基本不會再使用。

9、枚舉類型:本質上是一個int(或short)型變量,但是限制其取值範圍。同樣由編譯器識別處理。







發佈了41 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章