字符[4]和4 [字符]在C中是否相同?


Is chars[4] and 4[chars] the same in C? Why?

本问题已经有最佳答案,请猛点这里访问。

我读过这个但不相信:)我这里没有编译器可以测试。


在raw c中,[]符号只是一个指针数学助手。在[]之前,您将查找由ptr指向的块中的第四个字符,如下所示:

1
*(ptr+4)

然后,他们引入了一条看起来更好的捷径:

1
ptr[4]

它转换为早期的表达。但是,如果你想这样写:

1
4[ptr]

这将转化为:

1
*(4+ptr)

这确实是一回事。


因为a[b]与*(a+b)完全相同,+是交换的。

chars[4]*(chars+4)4[chars]*(4+chars)


http://c-faq.com/aryptr/joke.html试着测试编译:http://codepad.org/