它是一段安全的代码吗,或者编译器可以通过p
优化访问,这样*p
就会得到42
?
#include <stdio.h>
int i = 42;
int *d = &i;
void test(int const *p)
{
*d = 43;
printf("%d, %p\n", *p, (void *) p);
printf("%d, %p\n", *d, (void *) d);
}
int main() {
test(d);
return 0;
}
我发现*p
通常在43
中打印,但我想知道这里是否有任何trap ,所以在某些情况下,打印*p
可以得到42
.