如题所述
输出的第一个是(a-1)在内存中的地址,第二个是p指针减1后所指向的数
p=(int*)(&a+1)明显是不等价于*p=a[1]。。。
p=(int*)(&a+1)的意思是把a的地址加1赋值给指针p。也就是说p指在a[]的后面,即a[4]之后的地址。
输出那一句改成printf("%d %d\n",a[1],*(p-4)); 输出就是2 2了
运行结果是:
2,5