概述:
数组是一种数据格式,能够存储多个同类型的值。
一维数组可用来实现线性表的顺序存储、哈希表、堆(堆排序部分)等;
二位数组可用来保存图的邻接矩阵等。
1.1 一维数组的声明与字符数组
1.1.1 一维数组的声明与初始化
1.一维数组的声明
应指出以下三点:
1)存储在每个元素中的值的类型;
2)数组名;
3)数组中的元素数,数组的元素数必须用值大于等于1的常量表达式定义。
需要引起注意的地方:数组定义中类型不能使引用,因为引用是不能赋值的,而数组中元素必须可以被赋值。
如下面的定义就是错误的。
int& a[10]; // 错误的
虽然没有引用数组,但数组可以有引用。
int a[6] = {0, 2, 4, 6, 8, 10}; int (&p)[6] = a; // p是数组a的引用
注:数组的引用可以用于函数实参传递。此时可确保传递过来的数组长度合乎要求。
2.一维数组的初始化
1)函数体外定义的内置类型数组(即内置类型的全局数组),元素初始化为0;
2)函数体内定义的内置类型数组,元素无初始化(注意,若只初始化部分元素,其后的元素此时也会被初始化为0);
3)如果不是内置类型,则不管其在哪定义,自动调用其默认构造器函数为其初始化,若该类型无默认构造函数则会报错。
注:当数组的大小未知时,需要动态声明一维数组,声明格式如下:
int* a = new int[n]; //.... delete []a; // 当数组使用完毕,需要释放内存空间
1.1.2 字符数组
字符数组的初始化既可以用字符常量也可以用常量字符串(末尾有空字符)记性初始化:
方式1:char ca1[] = {'C', '+', '+'}; // 末尾没有null字符 char ca1[] = {'C', '+', '+', '