1. 定义
数组,一种能够存储多个相同类型的值的数据格式。
声明: typeName arrayName[arraySize]
需要注意的是,这种方式声明的时候,arraySize不能是变量。
数组声明会创建大量的变量,可以用索引来访问每个元素。数组索引从0开始,访问的时候要注意下标越界的问题。
int main(){
int arr [12] = {1, 2, 3};
cout<<arr[0]<<endl; // 1
cout<<arr[1]<<endl; // 2
cout<<arr[2]<<endl; // 3
cout<<arr[3]<<endl; // 越界
}
2. 初始化规则
- 只有在定义数组时,才能初始化,无法将一个数组赋给另一个数组。
int main() {
int arr [12] = {1, 2, 3}; //Y
int arr1 [12]; //Y
arr1[0] = 3; //Y
//arr1 = {1 ,2, 3}; //N 只能在定义时赋值
//arr1 = arr; //N 不能赋值给另一个数组
cout<<arr[0]<<endl;
cout<<arr[1]<<endl;
cout<<arr[2]<<endl;
}
- 初始化数组可以提供少于数组的元素数目,其他元素编译器默认设置为0。
- 初始化数组如果为int arr[5] = {1},那么第一个元素为1,其它设置为0。
- 初始化数组arraySize可以不填,编译器将计算元素个数 .
3. C++11的数组初始化方式
int main() {
//可以省略等号
int arr [3] {1, 2, 3};
//可以不在大括号中填值,默认为0
int arr1[2]{};
//初始化禁止缩窄
//int arr2[3] = {3.4,5.6}; // error 浮点数不能转为int
}
4. 数组的替代品
4.1 模板类vector
它是new创建动态数组的替代品,计算机会自动完成new和delete管理内存的步骤,vector可以在运行阶段设置对象的常服,末尾附加新的数据,中间插入新的数据等。在堆申请内存。
声明模板 : vector<typeName> vt(n_elem)
该模板声明了一个名为vt的vector对象,可存储n_elem个typeName对象。其参数n_elem可以是整型常量,也可以是整型变量。
需要包含头文件 #include<vector>
4.2 模板类 array
它是定长数组的替代品,array长度是固定的,使用栈内存。可以直接将一个array对象赋值给另一个array对象,而数组必须逐个元素赋值。
声明模板: array<typeName,num> vt;
该模版声明了一个名为vt的array对象,它包含num个typeName对象,其参数num只能为整型常量。
需要包含头文件 #include<array>
待续~