简介
注意
================================================
一、指针的算术操作
- 指针加上或减去一个整型数值等于获得一个新指针;
两个指针相减表示两个指针所指向的元素间隔的对象, ptrdiff_t n=ip2-ip
,其中ptrdiff_t是和size_t一样的类型,只不过它是signed整型(前提是指向同一个数组的指针)。size_t 类型用于指明数组长度,必须是一个正数。
- 允许在指针上减0,使指针保持不变,如果一个指针具有0值(空指针),则在该指针上加0仍然是合法的,结果还是一个值为0的指针。
二、计算数组的超出末端指针
- vector 类型提供的end操作将返回指向超出vector末端位置的一个迭代器,这个迭代器常用作哨兵,用来控制处理vector中元素的循环,同样的,我们可以计算数组的超出末端指针的值
const size_t array_size=5; //数组下标的类型必须是const的size_t的类型
int arr[arr_size]={1,2,3,4,5};
int *p=arr;
int *p2=p+arr_size;
//p2指向第五个元素,即数组超出末端的位置,C++允许计
//算超出末端的位置,但不允许对此地址进行解引用操作。
三、输出数组元素
const size_t arr_sz=5;
int int_arr[arr_sz]={0,1,2,3,4};
for(int*pbegin=int_arr,*pend=int_arr+arr_sz;pbegin!=pend;pbegin++)
{cout<<*pbegin<<" ";}
for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter)
*iter=0;