C解析之二数据类型进阶
前言:以别样的角度解析C。
在【C解析之一】数据类型中提到建立于基础数据类型之上的数据类型,现在我就给大家介绍一下常见的这类数据:1.数组 2.结构体
1.数组
如果要定义一个数,比如 int a 那么现在你可以用a来存储一个int型的数据啦。如果要定义5个呢,100个又怎么办?你肯定发现了,一个一个地写将让人无法接受,数组正是为此而设计的一种数据类型。数组好比定义了很多个一样类型的数据,除了上图的例子,你还可以:
float Array[5]; //定义5个float类型的数据
数组所定义的这些数据通过下表来表示,需要注意的是,数组里的第一个数据Array[0],第二个Array[1].数组在C/C++编程的使用非常广泛,由于通过下表访问的特性,使对数据的访问转化为数组统一的下表数组下标,在算法方面有独到的用处,这也是值得细细思考多加利用的地方。
值得注意的是数组的越界问题,在上面的情况下,访问Array[6]就越界了,超出了你定义数组的范围,会引起不可知错误。
2.结构体
数组能定义多个一样类型的数据,如果你需要记录一个学生的年龄,学号信息,你可能要选择int age,int ID等来记录,如果还要记录学习成绩int score等更多的信息...你会发现,这些数据都是跟同一个学生相关联,如此散乱的定义这些数据是不容易理解和管理的。结构体可以帮上忙了:
通过struct可以将年龄,学号,ID等信息组合成一个结构体,这方便了管理与使用这些相关的数据,这对于编程而言意义十分重大。struct student s1便定义了一个学生变量,它包含了年龄,ID,学习成绩。同过“ . ”运算符便可实现对age,ID,score的访问,如是s1.age,s1.ID。结构体的封装性(把一个学生相关的变量组合在一起)使程序结构清晰,易于理解。
同时结构体使这些数据在结构上存在联系,利用这点特质,你可以方便的实现很多其他方法难以做到的功能。比如,在多个学生体变量中寻找指定分数学生的年龄:
编程小技巧除了这种结构上的关联,在结构体里你还可以设标记变量,实现某种区分。