1、数据类型的分类
C语言的数据类型可以大致分为两大类:基本数据类型和派生数据类型(或复合数据类型)。
1.1、基本数据类型
(1)整形
- 基本整形 (int) : 用于存储整数。
- 短整形 (short int) : 比基本整型占用的内存少,用于存储较小的整数。
- 长整形 (long int) : 比基本整型占用的内存多,用于存储较大的整数。
- 双长整型 (long long int) : 用于存储更大范围的整数。
- 字符型 (char) : 存储单个字符(实际上存储的是字符的ASCII码值)。
- 布尔型 (bool) : C99标准后引入,用于表示真(true)或假(false)。
整型数据可以是有符号的(signed)或无符号的(unsigned),有符号整型数据的最高位(符号位)用于表示正负,而无符号整型数据的所有位都用于表示数值。
(2)浮点型
- 单精度浮点型 (float)
- 双精度浮点型 (double)
1.2、派生数据类型
(1)派生数据类型或复合数据类型是由基本数据类型通过某种方式组合而成的数据类型。
(2)C语言的派生数据类型主要包括以下几种:
- 指针类型: 用于存储变量的内存地址
- 数组类型
- 结构体类型
- 共用体类型
- 枚举类型
(3)此外,C语言还提供了空类型(void),它通常用于表示无类型或通用指针等场景。
2、数据类型与内存占用
(1)变量存储在内存中,需要占用一定的内存空间。一个变量占用多少空间是由变量的数据类型决定的。
(2)每种数据类型,在不同的机器平台上占用内存是不同的。
(3)计算类型或变量所占的内存大小(以字节为单位):sizeof(int)
3、空类型(void)
(1)C语言中的void类型,代表任意类型,而不是空的意思。任意类型的意思是它的类型是未知的,是还没指定的。
(2) void * 是void类型的指针。void类型的指针的含义是:这是一个指针变量,指向一个void类型的变量。void类型的变量就是说这个变量有可能是int,也有可能是float,也有可能是个结构体,哪种类型都有可能,只是我当前不知道。
(3)void型指针的作用就是,程序不知道那个变量的类型,但是程序员自己心里知道。程序员如何知道?当时给这个变量赋值的时候是什么类型,现在取的时候就还是什么类型。这些类型对不对,能否兼容,完全由程序员自己负责。编译器看到void就没办法帮你做类型检查了。
(4)在函数的参数列表和返回值中,void代表的含义是:
- 一个函数形参列表为void,表示这个函数调用时不需要给它传参。
- 返回值类型是void,表示这个函数不会返回一个有意义的返回值。所以调用者也不要想着去使用该返回值。
4、数据类型转换
(1)C语言中有各种数据类型,写程序时需要定义各种类型的变量。C语言有一个基本要求就是:不同类型的变量是不能直接运算的。也就是说,int和float类型的变量不能直接加减等运算。你要运算,必须先把两种类型转成相同的类型才可以。
(2)隐式转换
- 隐式转换就是自动转换,是C语言默认会进行的,不用程序员干涉。
- C语言的理念:隐式类型转换默认朝精度更高、范围更大的方向转换。
(3)强制类型转换
- 需要程序员指明将变量转换为何种类型。