C++数组学习记录一

数组是一种数据结构。

存放类型相同的对象的容器,这些对象没有名字,需要通过其所在位置访问。

数组的大小确定不变,不可随意向数组中增加元素(与vector不同点)。

Warning:如果不清楚元素的确切个数,请使用vector。

一、定义和初始化内置数组:

声明:a[d]形式,a为数组名,d为数组维度(说明元素个数),维度必须是一个常量表达式。

定义数组必须指定数组的类型,不可用auto关键字由初始值的列表推断类型。数组元素应为对象,不存在引用的数组(int &a[10]=/*…..*/是错误的)。

1、显式初始化数组元素:

A. 指明维度和元素。如:int ial[3]={1,2,3}

B. 不指明维度,编译器根据初始值的数量计算并推测。如:int ial[ ]={1,2,3,4}

C. 指明维度,初始值的总数量不应超出指定大小。若维度比提供的元素大,则后面被初始化为默认值。如:int ial[5]={1,2,3}等价于ial[]={1,2,3,0,0}

String ial[3]={“hi”,”bye”}等价于ial[ ]={“hi”,”bye”,” ”}

2、字符数组的特殊性:

字符数组的一种额外初始化形式,使用字符串字面值。但注意字符串结尾有一个空 字符。如:const char a[6]=”Daniel”;表示是错误的。因为“Danile”包括“ ”共有7个字符。

3、不允许拷贝和赋值:

不能将数组的内容拷贝给其他数组作为初始值,也不能用数组为其他数组赋值。

对于数组采用从数组的名字开始由内向外的顺序阅读。如:int (*a)[10]= &arr ,解读:圆括号内,a为一个指针,外部:指向10个元素的数组,为int型,所以a是一个指针,指向int型数组,这个数组有10个元素。

二、访问数组元素

1、 采用下标索引,下标通常定义为size_t类型,这个类型在cstddef头文件中。

2、 使用范围for语句。当需要遍历数组所有元素时。例:for(auto I : scores)

Warning:注意检查数组的下标,不要溢出


分享到:


相關文章: