减法运算
注意:如果两个指针都指向同一个数组中的元素,则他们之间可以相减、减法的结果就是胫骨哦调整(除以数组元素类型的长度),标识两个指针再数组中相隔多少个元素。
·如果两个指针并不是指向同一个数组的元素,则他们之间进行相减就是错误的·
指针的减法运算公式:就是两个指针的内存差值 / 指向的数据类型的内存空间大小
如果改变了指针类型指向的数据类型,对指针进行 + - 运算,其新指向的位置只和转换后的数据类型有关
如果是char , 则指针指向变化1byte
如果是int,则指针指向变化4byte
指针强转后对,指针++的影响
由于ptr 变成指向8bit的内存空间,所以如果想要访问到arr[1] 这个内存单元
就需要江ptr + 4个偏移量 = ptr + 4byte
#include "stdio.h"
int main(void) {
int arr[5] = {1,2,3,4,5};
int *p = arr;
printf("%d\r\n",p[1]); // 2
char *ptr = (char *)(&arr[0]);
printf("%d\r\n",ptr[4]); // 2
return 0;
}