int *p = NULL; if (1) { int i = 1; // &i = 0x7fff5fbffa6c p = &i; // p = 0x7fff5fbffa6c } printf("%d", *p); // p =0x7fff5fbffa6c, p = 1 这是apue 习题7.10 答案是程序不正确,p指针引用了不存在的变量,但在我机器上测试是通过的,在if后任能正确访问if里&i地址。 这个难道只是编译器优化的结果吗?
int *p = NULL;
if (1) {
int i = 1; // &i = 0x7fff5fbffa6c
p = &i; // p = 0x7fff5fbffa6c
}
printf("\n"); //加这一行再试试
printf("%d", *p); // p =0x7fff5fbffa6c, p = 1