我遇到了这样的代码:
#include <stdio.h>
int main(void)
{
int a[5] = { 1, 2, 3, 4, 5};
int *ptr = (int*)(&a + 1);
int *ptr2 = (int*) &a;
ptr2 +=1 ;
printf("%d %d %d \n", *(a + 1),*(ptr - 1) ,*ptr2 );
return 0;
}
除了这一行之外,指针算法为我做了:
int *ptr = (int*)(&a + 1);
它是未定义的行为吗?为什么我们要5
取消引用*(ptr - 1)
?