int main(int argc, char **argv)
{
int a[4] = {1, 2, 3, 4};
int *ptr = (int *)(&a + 1);
printf("%d", *(ptr - 1));
}
打印一下
void test7() {
int a[4] = { 1, 2, 3, 4 };
printf("a = %p\n\n", a);
int* ptr = (int*)(&a + 1);
printf("ptr = %p\n", ptr);
printf("ptr+1 = %p\n", ptr+1);
printf("ptr+2 = %p\n\n", ptr+2);
printf("*(ptr - 1) = %d\n", *(ptr - 1));
printf("*(ptr - 2) = %d\n", *(ptr - 2));
}输出
a = 00BAF800 ptr = 00BAF810 ptr+1 = 00BAF814 ptr+2 = 00BAF818 *(ptr - 1) = 4 *(ptr - 2) = 3
可以看出来,类型不同,指针加的字节数也不同。