指针地址左移可以使用C语言中的指针运算符“+”和整型数相乘的方式实现。例如,下面的代码演示了指针地址左移两个字节的操作:
#include <stdio.h>
int main()
{
int arr[] = {1, 2, 3, 4, 5};
int *p = &arr[2]; // 指向arr[2]的指针
printf("p = %p\n", p); // 输出p指向的地址
p = p - 2; // 指针地址左移2个字节,等价于p = p - sizeof(int)*2
printf("p = %p\n", p); // 输出移动后的地址
return 0;
}
输出结果如下:
p = 0x7ffc61ef576c
p = 0x7ffc61ef5764
可以看到,移动两个字节后,指向的地址从原来的0x7ffc61ef576c
变成了0x7ffc61ef5764
,正好左移了两个字节(int类型占4个字节)的距离。
指针地址右移可以使用C语言中的指针运算符“+”和整型数相乘的方式实现。例如,下面的代码演示了指针地址右移两个字节的操作:
#include <stdio.h>
int main()
{
int arr[] = {1, 2, 3, 4, 5};
int *p = &arr[2]; // 指向arr[2]的指针
printf("p = %p\n", p); // 输出p指向的地址
p = p + 2; // 指针地址右移2个字节,等价于p = p + sizeof(int)*2
printf("p = %p\n", p); // 输出移动后的地址
return 0;
}
输出结果如下:
p = 0x7ffcf2f8576c
p = 0x7ffcf2f85774
可以看到,移动两个字节后,指向的地址从原来的0x7ffcf2f8576c
变成了0x7ffcf2f85774
,正好右移了两个字节(int类型占4个字节)的距离。