在表达式使用数组名时,实际上使用的是指向数组第一个元素的指针。这种用法涉及很多方面,当它们出现时我们会逐一指出来。其中一个重要的应用就是使用下标访问数组时,实际上是使用下标访问指针:
int ia={0,2,4,6,8};
int i=ia[0];
ia[0]是一个使用数组名的表达式。在使用下标访问数组时,实际上是对指向数组元素的指针做下标操作。只要指针指向数组元素,就可以对它进行下标操作。
计算数组超出末端指针
vector类型提供的end操作将返回指向超出vector末端位置的一个迭代器。这个迭代器常用作哨兵,来控制处理vector中元素的循环。类似地,可以计算数组的超出末端指针的值:
const size_t arr_size=5;
int arr[arr_size]={1,2,3,4,5};
int *p=arr;
int *p2=p+arr_size;
以上的例子中,p指向数组arr的第一个元素,在指针p上加数组长度既可计算出数组arr的超出末端指针。p加5得到p所指向对象的元素后面的第5个int元素的地址——换句话说,p+5指向数组超出末端的位置。 |
|