`
Conviction
  • 浏览: 5897 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

C++数组

 
阅读更多

低级符合类型:数组、指针

数组的长度是固定的。数据一经创建,就不允许添加新的元素。指针可以向迭代器一样便利和检查数组中的元素。现在C++程序应尽量使用vector和迭代器类型,而避免使用低级的数组和指针。与使用标准的vector类型的程序相比,依赖于内置数组的程序更容易出错而且难于调试。

 

注意:数组定义中的类型名可以是内置数据类型或类类型;除引用之外,数组元素的类型还可以是任意的符合类型。没有所有元素都是引用的数组。

 

1.数组的定义和初始化

数组的维数必须要用大于等于1的常量表达式定义。此常量表达式只能包含整形字面值常量,枚举常量或者用常量表达式初始化的const对象,非const变量以及要到运行阶段才知道其值的const变量都不能用于定义数组的维数。

(1)显式初始化数组元素

const unsigned size = 3;
int arr[size] = {0,1,2};

 如果没有显式提供元素初值,则数组元素会像普通变量一样初始化。

在函数体外定义的内置数组,其元素均初始化为0;

在函数体内定义的内置数组,其元素无初始化;

不管数组在哪里定义,如果其元素为类类型,则自动调用该类的默认构造函数进行初始化;如果该类没有默认构造函数,则必须为该数组的元素提供显式初始化。

 

显示初始化的数组不需要指定数组的维数值,编译器会根据列出的元素个数来确定数组的长度:

int ia[] = {0,1,2};//数组长度为3

如果指定了数组的长度,那么初始化列表提供的哦元素个数不能超过数组维数值。

 

(2)特殊的字符数组

char ca1[] = {'c','+','+'};		//维数是3
char ca2[] = {'c','+','+','\0'};	//维数是4
char ca3[] = "c++";			//维数是4

 (3)不允许数组直接复制和赋值

与vector不同,一个数组不能用另外一个数组初始化,也不能将一个数组赋值给另一个数组,这些操作都是非法的。

 

(4)数组的操作

数组可以用下标符来访问,数组元素也是从0开始计数。对于一个包含10个元素的数组,正确的下标值是从0到9,而不是1到10

 数组下标的类型是size_t。

const size_t array_size = 10;
int ia[array_size];
for(size_t ix = 0;ix!=array_size;++ix)
	ia[ix] = ix;

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics