C语言数据类型分类
C语言数据类型的分类方式如下:
基本类型和枚举类型,统称算术类型(arithmetic type)。算术类型和指针类型,统称为标量类型(scalar type)。数组类型和结构类型被统称为聚合类型(aggregate type)。联合类型(union type)不被认为是聚合类型,因为在任一时刻下,联合中只有一个成员可以具有值。
函数类型(function type)描述了函数的接口。这指的是,该类型既指定了函数返回值的类型,又指定了在调用该函数时,传递给函数的所有参数的类型。
其他所有数据类型都是用来描述对象。这种描述可能包括也可能没有包括对象存储空间大小信息。如果包括,这种数据类型就称为对象类型(object type);如果不包括,就是不完整类型(incomplete type)。
下例,由外部定义的数组变量就是一个不完整类型:
某些数据类型在定义时使用了多个关键字,例如 unsigned short。在这种情况下,不限制关键字排列次序。但是,关键字次序存在习惯性的排列方式,本书遵照该惯例。
-
基本类型
- 标准整数类型,以及扩充的整数类型
- 实数浮点类型,以及复数浮点类型
- 枚举类型
- void类型
-
派生类型
- 指针类型
- 数组类型
- 结构类型
- 联合类型
- 函数类型
基本类型和枚举类型,统称算术类型(arithmetic type)。算术类型和指针类型,统称为标量类型(scalar type)。数组类型和结构类型被统称为聚合类型(aggregate type)。联合类型(union type)不被认为是聚合类型,因为在任一时刻下,联合中只有一个成员可以具有值。
函数类型(function type)描述了函数的接口。这指的是,该类型既指定了函数返回值的类型,又指定了在调用该函数时,传递给函数的所有参数的类型。
其他所有数据类型都是用来描述对象。这种描述可能包括也可能没有包括对象存储空间大小信息。如果包括,这种数据类型就称为对象类型(object type);如果不包括,就是不完整类型(incomplete type)。
下例,由外部定义的数组变量就是一个不完整类型:
extern float fArr[]; // 外部声明
这行代码声明 fArr 为一个数组,其元素为 float 类型。然而,由于上述代码没有指定该数组的大小,所以 fArr 的类型是不完整的。只要全局数组 fArr 在该程序的其他位置(例如,在其他源文件中)通过指定数组大小来完成定义,则上述声明足以使得在当前作用域内使用该数组。某些数据类型在定义时使用了多个关键字,例如 unsigned short。在这种情况下,不限制关键字排列次序。但是,关键字次序存在习惯性的排列方式,本书遵照该惯例。