因为是 (*p) + 4 也就是 'a' 的ascii 码 + 4 的那个字符,所以是 e
解决方案:
如果p指针指向的是数组的首元素,那么p即为数组第一个元素的值,计算p+4即为首元素加上4个单位的距离之后的地址所对应的元素的值,也就是数组的第五个元素的值。
如果想要让p+4的结果是数组中的第五个元素的地址,可以将p强制转换为void类型指针,这样p+4就是指向数组中的第五个元素的地址了。
代码示例:
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5, 6};
int* p = arr;
printf("%d\n", *(p+4)); // 数组第五个元素的值为5
printf("%p\n", (void*)(p+4)); // 数组第五个元素的地址
return 0;
}
输出结果:
5 0x7ffee084c458
其中,0x7ffee084c458 是数组中第五个元素的地址。注意,在计算数组元素地址时,指针类型的大小影响计算结果,本例中指针类型为int*,即每次加1代表跨越4字节。如果使用不同的数据类型指针,计算结果也会不同。