指针运算遵循指针运算规则。只有几种特定的算数可以作用于指针和其他的地址表达式,他们是:
地址表达式+整数
整数+地址表达式
地址表达式-整数
地址表达式-地址表达式
整数和地址表达式相加的结果是另一个地址表达式,在计算过程中,整数自动地以基类型的单位长度为因子按比例放大。C/C++编译器替你完成这种放大运算:
新地址=老地址+(整数X基类型的单位长度)
eg:
int arr[5]={1,3,4,2,4};
int *p;
p=arr;
p=arr+2; // 和 p=&arr[2]一样,而arr[2]被解释为*(arr+2),arr+2==arr+(2Xsizeof(int)),于是p变量中数据为指向arr[2]的地址,p指向arr[2]所在的数据地址。
p++;,
//此时*p==arr[3]
因为p为int型,p++的实际效果将是给它加上sizeof(int),于是指向数组中的下一个数据。