影响最为深远的复合类型是类,它将是学习c++的难点。然而,C++还支持几种更普通的复合类型 ,它们都来自C语言。例如,数组可以存储多个同类型的值。一种特殊的数组(字符数组)可以存储字符串(一系列字符)。结构可以存储多个不同类型的值。而指针则是一种将数据所处位置告诉计算机的变量,指针也是分类型的,与所指向位置的数据类型一致。本章将介绍所有这些复合类型(类除外),还将介绍 new和delete 及如何使用它们来管理数据。另外,还将简要地介绍string类,它提供了另一种处理字符串的途径。
(一)数组
1. 数组的创建
(1)要创建数组,可使用声明语句。声明数组,比如:short months [l2] ; //creates array of 12 shorts;创建了有12个short元素的数组。数组的意义在于创建多个存储同种类型数据的变量,这些变量通过下标来区分,因此可以使用for循环等来进行方便的批量自动处理。
数组声明应指出以下三点:
• 存储在每个元素中的值的类型:
• 数组名
•数组中的元素数。
(2)typeName arrayName [arraySize] ;arraySize不能是变量,必须是常量(可以是整型常量,常量表达式,还可以是const常量),但可以用new来避开这种限制(程序运行时用new创建一个数组)。数组下标或索引从零开始,最后一个元素的索引比数组长度小1,比如arrayName[arraySize-1]是上面数组的最后一个元素。编译器不会检查使用的下标是否有效。例如,如果将一个值赋给不存在的元素,编译器并不会指出错误。但是程序运行后,这种赋值可能引发问题,它可能破坏数据或代码,也可能导致程序异常终止。所以必须确保程序只使用有效的下标值。
(3)int yamcosts [3] = {20, 30, 5};使用初始化列表赋值,为初始化赋值,初始化列表只有在定义的时候才能使用。初始化列表可以省略等于号。
(4)sizeof运算符返回类型或数据对象的长度(单位为字节)。注意,如果将sizeof运算符用于数组名,得到的将是整个数组中的字节数。但如果将sizeof用于数组元素,则得到的将是元素的长度(单位为字节)。
2.数组的初始化规则
(1)只有在定义数组时才能使用初始化,此后就不能使用了,也不能将一个数组赋给另一个数组:
(2)如果只对数组的一部分进行初始化,则编译器将把其他元素设置为0。因此,将数组中所有的元素都初始化为0,非常简单,只要显式地将第一个元素初始化为0, 然后让编译器将其他元素都初始化为 0即可;比如long totals [500] = {0} ;
(3)如果初始化数组时方括号内为空,C++编译器将计算元素个数。例如,对于下面的声明:short things[ ]={15 , 3,5, 8};会自动将数组的长度设置为4个。
(4)首先,初始化数组时,可省略等号(=):如double earnings [4] {1.2e4 , l.6e4 , l.le4 , l.7e4 };其次,可不在大括号内包含任何东西,这将把所有元素都设置为零:unsigned int counts [l0] = {}; // all elements set to 0。第三,列表初始化禁止缩窄转换,即不可以将浮点型转化为整型,不可以将long转化为int等。
如果您觉得有用,可以加我微信公众号,微信搜索“阿厉与机器狗”,C++,linux,Qt学习笔记和经验总结全都有,没有基础也可以从零开始学起,跟我一起进步吧!
数组就是排成排的同种元素