在之前我们介绍了像箱子一样的变量,在前面的学习中,我们也基本掌握了如何使用变量,可是,单个的变量有个严重的缺陷,就是它能存储的数据实在太少了,要么只能存一个数,要么只能存一个字符。然而有时候要处理很多数据,那些数据该怎么放呢?本篇我们来学习放数据的”大仓库”(数组),学会了数组,我们就能让计算机处理更多的数据,
在程序设计中,大多数数据都是存放在变量里的。如果我们要处理较多的数据,增加存放数据的空间,最简单的方法就是多设置一些变量,然而变量多了就难以管理了,这就好像一个班级里的学生名字有长有短,即使没有重复的名字,要在一长串名单里找到一个学生的名字也不是一件容易的事。于是,最方便的方法就是给学生编上学号了,把名单让学号排列好以后,查找起来只要找学号就可以了,因为数字的排列是从小大大的,是有顺序的,所以查找起来要比在一堆长短不一的名字中查找方便多了。
我们受到“学号”的启发,也可以给变量编一个号,把存储着相关内容的变量编在一组内,这就称为数组(Array)。
一.C++中的数组声明
数组的本质也是变量,所以在使用数组之前,必须要声明数组。声明一个数组的语法格式为:数据类型 数据名[常量表达式];
和申明变量类似,数据类型仍然是整型,字符型等……,数组的命名规则和变量的命名规则也是一样。在这里要说明两个问题;以前我们了解过在语法规则中的中括号表示可有可无的东西,但是在数组名后的中括号有着其独特的含义,不是可有可无的。数组名后的中括号是数组的一个特征,没有这个特征就不是数组了。数组中每个存放数据的变量称为数组元素,中括号里的常量表达式称为数组的大小,即是元素个数。如 int a[10];这句语句就是声明了一个可以存放10个整数数据的数组,它所能存储的数据相当于10个整数变量。
计算机必须在程序执行之前就知道数组的大小,因此中括号内只能是一个常量表达式,而不能含有变量。
通过实验,我们知道无法根据程序运行的实际情况来声明一个数组的大小。所以为了保证程序有足够的存储空间和正常运行,尽量要声明一个足够大的数组,要注意;足够大不是无穷大,比如要存放一个50人左右的班级的学生成绩,我们声明一个大小为70的数组就是足够大了。但是声明一个大小为1000的数组却是不必要的浪费。
二.数组的操作
前面说到,数组就像给变量编了号,那我们在访问数组中的某一个元素时自然要用到这个编号了。给学生编的号称为学号,给数组元素编的号称为下标(Subscript)。我们要表达数组中某一个元素的格式为: 数组名 [下标]。
在C++中,下标是从0开始,所以一个大小为n的数组,它的有效下标是0~n -1,如果下标不在这个范围之内,就会发生错误,和声明数组时不同,操作一个数组元素时,它的下标既可以是一个常量表达式,也可以是一个含有变量的表达式。
我们来写一个简单的例子(大家动手测试)
我们运行完程序以后,发现除了要注意下标是否有效之外,对数组的操作和变量的操作是一样的,
三.数组的初始化
我们知道,变量在声明的同时可以进行初始化,同样地,数组可以在声明的时候进行初始化,其语法格式为:数据类型 数组名[常量表达式]={初始化值1,初始化值2,初始化值n}
在初始化数组时,大括号中值的个数不能多于声明数组的大小,也不能通过添加逗号方式跳过,但是,值的个数可以少于数组声明的个数。
如图:
四.省略数组大小
我们已经知道如何声明和初始化一个数组。然而有的时候我们既要赋值还要数元素个数,有些麻烦,既然已经对各元素赋了初值,计算机能否自己算出有多少个元素呢?答案是肯定的,只要对各元素赋了值,计算机会自动计算出声明的数组应该有多大。例如:
int array[] ={1,2,3,4}
上面这句代码就相当于下面这句
int array[4] ={1,2,3,4}
这样的写法便于我们声明数组元素时的插入与修改,我们只需要直接在括号中对数据进行修改就可以了。不必去考虑中括号的数组大小应该怎么变化,但是,在这种情况下又怎么才能知道数组的大小呢?我将在下一篇中写个例子。
本篇完!喜欢的朋友可以收藏与转发,欢迎大家在下方评论留言,下一篇 《仓库是怎么造成的》