C++ 标准不允许对指针执行乘法和除法操作。如果需要在内存中按更大的步幅移动指针,你必须手动计算相应的偏移量。
voidfunc(){int arr[]={10,20,30,40,50};int* p = arr;// 指向数组的第一个元素
p++;// 现在 p 指向 arr[1]int val =*p;// val 的值为 20
p +=2;// 现在 p 指向 arr[3]
val =*p;// val 的值为 40
p--;// 现在 p 指向 arr[2]
val =*p;// val 的值为 30int difference =&arr[4]- p;// difference 的值为 2}voidfunc1()//递增 ++ 和递减 --{int arr[]={10,20,30};int* p = arr;// p 指向数组的第一个元素,arr[0]
p++;// 现在 p 指向 arr[1]
p--;// 现在 p 又指向 arr[0]}voidfun2()//加法 + 和减法 - {int arr[]={10,20,30,40,50};int* p = arr;// p 指向 arr[0]
p = p +2;// 现在 p 指向 arr[2]
p = p -1;// 现在 p 指向 arr[1]}voidfunc3()//指针与指针的减法{int arr[]={10,20,30,40,50};int* start = arr;// 指向 arr[0]int* end = arr +5;// 指向 arr[5](注意:这是数组的尾后地址,不能被解引用)
ptrdiff_t diff = end - start;// diff 是 5}