-4 c
我遇到过这个有趣的片段.我说没有办法可以工作(没有崩溃).令人震惊的是,它在Linux(使用gcc编译)和OSX(llvm)上都运行"ok".更令人不安的是,Valgrind没有发现任何错误!
是什么赋予了?
int main(void) { int a[3]; 2[a] = 1; }
Ere*_*ith 5
简而言之,编译器将表单中的任何内容翻译x[y]为*(x + y).因此,2[a]转化为*(2 + a)这是一样*(a + 2)的a[2].
x[y]
*(x + y)
2[a]
*(2 + a)
*(a + 2)
a[2]
归档时间:
11 年,3 月 前
查看次数:
43 次
最近记录: