C++每日一课(九)

来源:互联网 发布:网络诋毁企业 编辑:程序博客网 时间:2024/05/17 23:43
数组


数组是一种数据格式,可以用来存储多个同类型的值,注意这里的同类型。


数组的声明,需要指明以下三点
1.存储在每个元素中值的类型
2.数组名
3.数组中的元素数


在C++中,可以通过修改简单变量的声明,添加中括号(在中括中指出元素的个数)来完成
比如:short months[12];
注意:其中指定的元素个数必须是一个整型字面常量、const值、常量表达式。必须要保证其值在编译时都是已知的。


数组的访问
C++中使用下标或索引来对元素进行编号,它的编号是从0开始的
C++使用带索引的方括号来指定数组中的某个元素,如:months[0] 表示的是months数组中的第一个元素
注意:在数组中最后一个元素的索引一定是比数组长度小1的。


在编译器中它是不会去校验使用下标是否有效的,这个在运行过程中会出错。


/*作者:xiesheng时间:2017-06-27版本:v1.0说明:数组相关*/#include <iostream>int main() {using namespace std;int num[3];//声明int类型的数组num[0] = 6;//数组元素的赋值num[1] = 7;num[2] = 8;int cost[3] = { 10,20,30 };//声明数组时直接初始化元素的值cout << "num数组中各元素求和为:" << num[0] + num[1] + num[2] << endl;cout << "cost中各值为:" << cost[0] << "\t" << cost[1] << "\t" << cost[2] << endl;int total = num[0] * cost[0] + num[1] * cost[1] + cost[2] * num[2];cout << "总共的花费是:" << total << endl;cout << "num数组总字节数:" << sizeof num << endl;cout << "num数组中各元素所占的字节:" << sizeof num[0] << endl;cout << "num数组元素个数:" << sizeof num / sizeof num[0] << endl;system("pause");return 0;}




num数组中各元素求和为:21
cost中各值为:10        20      30
总共的花费是:440
num数组总字节数:12
num数组中各元素所占的字节:4
num数组元素个数:3
请按任意键继续. . .




int cost[3] = { 10,20,30 }; 这种赋值是在声明数组的时候提供了一个初始化的列表
数组在没有进行初始化元素值的时候其中的值是不确定的(随机的),就是原来内存中的值


有一个初始化列表没有对指定的所有元素进行赋值
int cost[5] = {1,2}; 这个时候只对数组中的前两个元素进行赋值了,后面没有赋值的元素会默认初始化为0
如果需要把数组中的所有元素都初始化为0则可以使用类似于以下的方法进行初始化
long totals[500] = {0};
如果在声明数组时[]中的元素个数没有指明,则编译器会根据初始化列表计算元素的个数,比如
short s[] = {1,3,5,7,9}; 这个时候编译器则认为s数组元素的个数为5


数组还可以直接使用{}来进行初始化
比如:double d[2]{1.0e2,1.2e4};
如果在大括号中不包含任何东西的时候,编译器会把元素值都置为0
int i[10] = {};
float f[10]{};
以上两种方式都会把数组中元素都置为0


列表初始化禁止缩小转换
比如:long l[4] = {25,92,1.0}; //这里是通不过的,因为浮点数不能转为整型


C++中标准模板库STL提供了一种数组的替代品,它是模板类vector,而且新增了模板类array