数组与指针

数组的大小必须在编译的时候就要确定;数组不允许拷贝和赋值,如:

1
2
3
int a[] = { 0, 1, 2};
int a2 = a; //错误
a2 = a; //错误

一些编译器支持数组的赋值,这就是所谓的编译器扩展。但一般来说,最好避免使用非标准特性,因为使用非标准特性的代码可能在其他编译器上面无法通过。数组的下标是size_t类型,这是一种机器相关的无符号类型。c++11引入了两个函数begin()和end()得到类似于迭代器的操作,如:

1
2
3
4
5
int *pbeg = begin(arr), *pend = end(arr);
while(pbeg !=pend)
{
cout << *pbeg << endl;
}

指针之间的距离类型是一个ptrdiff_t的类型。