数组是一组具有相同数据类型的元素的集合。
c++为基本算术数据类型提供了内置的支持。同时他也支持双精度和单精度的数据支持。除此之外c++还支持布尔类型,以及用来存放字符集中单个元素的字符支持。
在内置数据类型和标准库类类型之间的是复合数据类型(compuond type)特别是指针和数组类型。
数组(array)是一个顺序的容器.它包含单一类型的元素。
例如:序列
0 1 1 2 3 5 8 13 21
代表菲波那契序列的前9个数。(只要给出前两个数据,后面的数据就是前两个数据的之和。)
a[8]={0,1,2,3,4,5,6,7}
当a[9]的时候,就会出现一位偏移错误(off-by-one):
通常我们用循环来遍历数组中的元素。
例如:下面的程序初始化了一个数组。前9为分别为0---9
int main()
{
int ia[10];
int idex;
for(idex=0;idex<10;idex++)
{
ia[idex]=idex;
}
for(idex=9;idex>=0;idex--)
{
cout<<ia[idex]<<"";
cout<<endl;
}
}
c++虽然对数据类型提供了内置的支持。但是这种支持只是限定于“读写单个数组元素”。c++不支持数组的抽象(abstracion),也不支持对整个数组的操作.我们有时候希望对整个的数组进行操作。例如:把一个数组赋值给另一个数组。对两个数组进行比较。。想知道数组的大小。
例如:给出两个数组,我们不能直接用赋值操作符,把一个数组的值拷贝到另一个数组中去。
比如:
ia1[10], ia2[10]
ia1[10]=ia2[10];/////错误。不能直接把一个数组的值通过赋值运算符赋值给另一个数组。
如果想把一个数组的值赋值给另一个数组我们必须自己编写程序。
for(int idex=0;idex<10;idex++)
{
ia1[idex]=ia2[idex];
}
而且数组类型并没有自己的意识。它并不知道自己的长度,我们必须另外记录数组的信息。当我们希望把一个数组作为参数传递给一个函数的时候,问题就出现了。在c++中,数组不同于整型类型和浮点类型,它不是c++的一等公民(first——class),它是从c语言中继承而来的,它反映了数据与对其进行操作的算法的分离。这正是过程话程序的特点。