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

Jua*_*nti 3 c

我已经读过这个并且不相信:)我在这里没有编译器来测试.

And*_*mar 9

在原始C中,[]符号只是一个指针数学助手.在此之前[],您将在以下块中查找第四个字符ptr:

*(ptr+4)
Run Code Online (Sandbox Code Playgroud)

然后,他们介绍了一个看起来更好的捷径:

ptr[4]
Run Code Online (Sandbox Code Playgroud)

哪个转换为早期的表达式.但是,如果你写它像:

4[ptr]
Run Code Online (Sandbox Code Playgroud)

这将转化为:

*(4+ptr)
Run Code Online (Sandbox Code Playgroud)

这确实是一回事.

  • 技术上并不完全 - 请参阅:http://www.lysator.liu.se/c/c-faq/c-2.html(但就本答复而言,它们已足够接近!) (4认同)

Ned*_*der 5

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

chars[4]是的*(chars+4),4[chars]是的*(4+chars)