C 数据类型
C 数据类型
在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。
C 中的类型可分为以下几种:
序号 | 类型与描述 |
---|---|
1 | 基本数据类型,它们是算术类型,包括整型(int)、字符型(char)、浮点型(float)和双精度浮点型(double)。 |
2 | 枚举类型:它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。 |
3 | void 类型:类型说明符 void 表示没有值的数据类型,通常用于函数返回值。 |
4 | 派生类型::包括数组类型、指针类型和结构体类型。 |
数据类型的作用 (以char举例)
- 确定数据内存空间大小。char类型的数据在内存中占用 8Bits (1Byte).
- 确定数据表示范围。char类型变量的取值范围为0x00~0xFF。
- 规定数据所能进行的操作。char类型能进行位操作。
数据类型与编译器
不同类型的数据占用的内存空间和表示的数据范围取决于编译器。
数组
【数组定义】
具有相同的数据类型,且按照一定顺序排列的一组变量的集合。
【数组特征】
- 数组元素之间具有固定的先后顺序。
- 通过数组名和下标可以唯一地确定数组中的数组元素。
【数组一般形式】
数据类型 数组名[常量表达式] —— 一维数组
方括号[]:下标运算符,单目运算符,运算时,优先级最高。
【数组分类】
N维数组:具有N个下标的数组。
【数组应用】
- 一维整型/实型数组:向量。
- 二维整型/实型数组:矩阵。
- 字符型数组:一行文本。
【数组注意事项】
- 常量表达式绝不能包含变量。在C/C++中不允许对数组的大小做动态定义。
- 数组名的作用:1.数组标志名称。2.代表该数组存储空间的首地址(第一数组元素的地址),即:数- 组名本身还是个地址量。
- C/C++规定只能单个使用数组中的某个数组元素,而不能一次使用整个数组。
- 注意对数组进行边界检查,C/C++在运行时不做边界检查,当下标值超界时,系统不指出其错误。
结构体
【结构体定义】
由一系列具有相同类型或不同类型的数据构成的数据集合。
struct 结构体名
{
数据类型 成员名1;
数据类型 成员名2;
...
数据类型 成员名N;
};
struct: 定义结构体类型的关键字。
struct 结构体名 结构经过定义后也是一种数据类型。
【结构体类型变量的定义】
1.直接定义:指在声明结构体类型的同时定义结构体变量。
struct student
{
int num;
char name[20];
float score;
}zhao, wang, li;
//在定义了student 结构体类型的同时,也定义了zhao,wang,li三个student型的结构体变量。
间接定义:先定义结构体类型,在定义结构体变量。
struct student
{
int num;
char name[20];
float score;
};
//C++中,struct 关键字可省略;C 中,struct 关键字不可省略。
struct student zhao, wang, li;
无名定义:当结构体类型和变量同时定义时,可省略结构体类型名。
struct
{
int num;
char name[20];
float score;
}zhao, wang, li;
//注意,由于省略了结构体类型名,因而以后不能再用这种结构类型定义其他变量。
联合体
【联合体定义】
使用几个不同类型的变量共同使用同一段内存区域的结构称为联合体类型。
- 联合体变量的不同成员,占用同一个存储区域。各个变量占用同一个起始地址,但在某个瞬间,只能存放一个成员的数据,即只有一个成员有效,其他成员无效。
- 在联合体变量中,一个新成员被赋值后,原有成员的数据被冲掉。若连续为各个成员赋值,只有最后一个呗赋值的成员有效。
- 联合体变量不能作为函数参数,函数也不能返回联合体类型。但指向联合体变量的指针变量可以作为函数参数,函数也可以返回联合体类型指针变量。
枚举类型
【枚举定义】
一个有名字的整型常量的集合,指出了这种类型的变量具有的所有合法值。
【枚举类型及枚举变量的定义】
enum 枚举类型名
{
枚举元素1[=整型常量1],
枚举元素2[=整型常量2],
...
枚举元素n[=整型常量n]
};
//enum:定义枚举类型的关键字
【枚举注意事项】
- 枚举定义的每个枚举元素代表一个整型值。定义时无赋值,编译系统按定义顺序使其值分别为0,1,2,3…; 若枚举元素有赋值,则以赋值为准。
- 枚举元素被视为常量,在枚举定义之外,局不能对其赋值。
- 在定义各个枚举袁术不能崇明,程序中其他标识符也不能与枚举元素重名。