>>28
main() {
int a;
int i = (int)&a;

*(int *)i = 0;
printf("%d\n", a);
return 0;
}

結果
0

これは、合法です。