上QQ阅读APP看书,第一时间看更新
2.6 复杂数据及运算
运用基本数据类型,只能对简单数据建模。但是当需要处理大量同一类型的数据时,需要将一组相关的不同类型数据作为一个整体来存储和处理,需要模拟整数的某个有限子集,仅仅使用基本数据类型显然难以方便地建模。这时候,由基本类型数据复合而成的数组、结构体,以及由列举整数的子集而形成的枚举类型,可以有效地模拟略为复杂的数据。这样的复合数据类型是许多高级语言都普遍具有的,C++语言从C语言中继承了这些。
当函数之间需要共享大量数据的时候,以参数和返回值在函数之间传递数据会给函数的调用带来比较大的开销,影响程序的效率,而传递地址不失为一种高效的方案。对于处理大批量数据的程序来说,设计程序时可能无法确定运行时对存储空间的需求,这就需要在运行时动态申请内存。动态申请的存储空间与普通变量不同,不能命名,也就是没有变量名,于是就需要用内存地址去访问动态申请的内存空间。C++从C语言继承了灵活高效的指针类型,也就是地址类型。
本节主要介绍数组、结构体、枚举类型,以及动态内存分配和指针。这些都是从C语言中继承的类型,能够有效地支持面向过程的程序设计。但是以面向对象的观点去模拟复杂的事务,还需要抽象程度更高的“类”,这将在本书的后续章节进行介绍。以数组和指针来处理群体数据也是面向过程的方法,安全性不够好,程序的可重用性也不高。