C語言資料型別分類

2020-07-16 10:04:21
C語言資料型別的分類方式如下:
  • 基本型別
    • 標準整數型別,以及擴充的整數型別
    • 實數浮點型別,以及複數浮點型別
  • 列舉型別
  • void型別
  • 派生型別
    • 指標型別
    • 陣列型別
    • 結構型別
  • 聯合型別
  • 函數型別

基本型別和列舉型別,統稱算術型別(arithmetic type)。算術型別和指標型別,統稱為標量型別(scalar type)。陣列型別和結構型別被統稱為聚合型別(aggregate type)。聯合型別(union type)不被認為是聚合型別,因為在任一時刻下,聯合中只有一個成員可以具有值。

函數型別(function type)描述了函數的介面。這指的是,該型別既指定了函數返回值的型別,又指定了在呼叫該函數時,傳遞給函數的所有引數的型別。

其他所有資料型別都是用來描述物件。這種描述可能包括也可能沒有包括物件儲存空間大小資訊。如果包括,這種資料型別就稱為物件型別(object type);如果不包括,就是不完整型別(incomplete type)。

下例,由外部定義的陣列變數就是一個不完整型別:

extern float fArr[];  // 外部宣告

這行程式碼宣告 fArr 為一個陣列,其元素為 float 型別。然而,由於上述程式碼沒有指定該陣列的大小,所以 fArr 的型別是不完整的。只要全域性陣列 fArr 在該程式的其他位置(例如,在其他原始檔中)通過指定陣列大小來完成定義,則上述宣告足以使得在當前作用域內使用該陣列。

某些資料型別在定義時使用了多個關鍵字,例如 unsigned short。在這種情況下,不限制關鍵字排列次序。但是,關鍵字次序存在習慣性的排列方式,本書遵照該慣例。