指针运算
1.指针+、-整数(*p++)
int values[5];
int *vp;
for(vp = &values[5] ; vp>&vaiues[0])
{
* --vp = 0;
}
指针vp初始化为数组最后一个元素的后一个位置,从后往前把数组内元素置成0
2.指针-指针 (指针-指针得到的两个指针之间的元素个数,可用于求字符串的长度)
指针和指针相减的前提:两个指针指向同一块空间
3.指针的关系运算 (p<&arr[5])
for(vp = &values[5-1]; vp >= &values[0] ; vp--)
{
*vp = 0;
}
指针vp在最后一次–时指到了数组第一个元素的前一个位置,再比较时<&values[0]
就退出循环,虽然大部分编译器能通过,但这个代码不太好,应避免这种写法
因为标准定义:允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较。