计算机程序基础教程(07):C语言 - 数组
【数组】
数组用于存储多个类型相同的数据,每个数组元素都有一个内部编号,称为下标,下标从0开始分配,第一个元素下标为0,数组元素通过“数组名+下标”的方式调用。
若指定的下标超过数组长度,则会造成数组越界访问,为了避免这种情况,应该使用if语句判断下标的值,禁止超过数组长度。
● 多维数组
二维数组用于将多个类型、长度相同的一维数组集中存储,可以认为二维数组的元素是一维数组,三维数组的元素是二维数组,以此类推,还可以有四维数组。
有些教材将二维数组比喻为一张表,三维数组比喻为一个立体结构,其实这样解释是不准确的,甚至基于这个思路就无法理解三维以上的数组,多维数组的存储也是线性的,所有的数组元素全部依次排列在虚拟地址中。
【字符串】
字符串是一个元素类型为char的数组,用于存储字符编码,char类型数组的赋值方式有些特殊,他可以像普通数组那样使用数值为元素赋值,也可以使用字符为元素赋值,编译器会自动转换为对应的字符编码。
使用字符串时,字符编码往往不会占用数组的全部长度,字符编码使用的数组长度称为有效长度,为了确认字符串的有效长度,C语言规定在有效长度之后添加一个空字符(字符编码为0),通过空字符的位置判断字符串的有效长度。
【结构体】
结构体用于将一些类型不同的数据集中存储,结构体成员长度不同,所以不能像数组那样通过编号调用,每个结构体成员都有自己的名称,使用“结构体名+成员名”的方式调用。
结构体的定义方式与数组不同,结构体需要首先指定内部所有数据的类型和名称,此行为称为声明结构体,之后通过声明定义结构体实例。
先声明后定义的方式,可以简化定义多个同类型结构体的代码,无需重复指定结构体成员的类型。
【共用体】
共用体类似结构体,将多个类型不同的数据集中存储,但是这些数据占用同一段存储空间,同一时间只能使用其中一个,防止混乱,共用体的长度为其中最大成员的长度。
这里的成员类型不同指的是存储方式的不同,比如:有符号整数、无符号整数、浮点数、数组、结构体,而非存储方式相同、长度不同的数据,若多个存储方式相同而长度不同的数据使用共用体存储,本质上是使用其中长度最大的数据作为变量,与直接使用一个变量的功能完全相同。
因为高级编程语言无法像汇编那样使用指令随意操作一段内存,所以C语言提供了共用体,用于实现一段存储空间在多个数据之间的重用,使用共用体的优势有以下两点:
1.节省内存,若多个数据不会同时使用,可以将其定义为共用体,对于内存很小的计算机来说非常有用。
2.让一个数据的类型可以在整数、浮点数、数组、结构体之间进行转换,当你不确定一个数据的类型时,可以使用共用体接收它,之后转换为需要的类型。
共用体的使用方式与结构体类似,也是先声明后使用。
【枚举】
枚举,意为一一列举,将一个变量可以使用的值全部列举出来,之后只能使用这些值中的一个进行赋值,用于限制一个变量的取值范围。
枚举变量的类型默认为int,并且不能修改。