(7)c++复合数据类型之数组
数组
数组就是可以存储一组相同类型的值,比如int a[10];就是一个存储10个int类型的数组。
数组初始化
数组初始化可以单个初始化,也是使用列表初始化,列表初始化可以全部,或者部分,如下案例:
#include <iostream>
int main(void){using namespace std; int a[10];// 单个初始化a[0] = 10;a[1] = 9;cout << "array index 0:" << a[0] << endl;cout << "array index 1:" << a[1] << endl; cout << "array index 2:" << a[2] << endl; cout << "array index 3:" << a[3] << endl; cout << "array index 4:" << a[4] << endl; cout << "array index 5:" << a[5] << endl; cout << "array index 6:" << a[6] << endl; cout << "array index 7:" << a[7] << endl; cout << "array index 8:" << a[8] << endl; cout << "array index 9:" << a[9] << endl; // 列表初始化cout << endl;int b[10] = {1,2,3,4,5,6,7,8,9,10};cout << "array index 0:" << b[0] << endl;cout << "array index 1:" << b[1] << endl; cout << "array index 2:" << b[2] << endl; cout << "array index 3:" << b[3] << endl; cout << "array index 4:" << b[4] << endl; cout << "array index 5:" << b[5] << endl; cout << "array index 6:" << b[6] << endl; cout << "array index 7:" << b[7] << endl; cout << "array index 8:" << b[8] << endl; cout << "array index 9:" << b[9] << endl; // 列表初始化// 列表部分初始化int c[10] = {1,2};cout << endl;cout << "array index 0:" << c[0] << endl;cout << "array index 1:" << c[1] << endl; cout << "array index 2:" << c[2] << endl; cout << "array index 3:" << c[3] << endl; cout << "array index 4:" << c[4] << endl; cout << "array index 5:" << c[5] << endl; cout << "array index 6:" << c[6] << endl; cout << "array index 7:" << c[7] << endl; cout << "array index 8:" << c[8] << endl; cout << "array index 9:" << c[9] << endl; // 列表初始化return 0;
}
运行结果:
从结果可以看到
1、通过角标赋值必须初始化所有值,否则会有脏数据出现。
第一部分a数组中创建了大小为10的“int数组”,并且赋值了角标为0和1的元素值分别为10和9,此时对应角标元素打印出来的值也是正确的10和9,
注意:我们并未给a[2],a[3]赋值,但是确取值时获取到了,这是因为没有给这个角标的元素赋值,直接取数则会获取到的值是原来该内存中遗留的值。
2、通过列表初始化所有值,更加的便捷。
3、通过列表初始化部分值,其他值会自动设置为0。
所以注意使用数组时,一定记得定义变量的原则,必须执行初始化,会出现不可预料的值。
数组不能赋值给另外一个数组
如下代码是非法的。
#include <iostream>
int main(void){using namespace std; int a[3] = {1,2,3}; int b[3] = {4,5,6};
// 不允许将一个数组赋值给另外一个数组b = a; return 0;
}
编译时将无法编译通过: