我所遇到出外代码:指针运算和地址
#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)
?
'int a [5] = {1,2,3,4,5,6};'是一件很糟糕的事! – jn1kk
@jsn我的坏!这只是问题中的5个元素,我在复制代码之前做了一些奇怪的测试,我会改变它:)但问题依然存在。 – user1471