薛定谔的指针
分析一个有意思的代码现象
#include <stdio.h>
int main(void) {
int a = 1;
int b = 2;
(&a)[-1] = 9999;
printf("%d\n", b);
// printf("%x", &b);
return 0;
}
输出结果:
打开注释:
#include <stdio.h>
int main(void) {
int a = 1;
int b = 2;
(&a)[-1] = 9999;
printf("%d\n", b);
printf("%x", &b);
return 0;
}
输出结果:
当你观察b时输出想要的结果,不观察时没有改变结果,挺有意思的
原因是与编译器的机制有关