如何解释输出?

use*_*862 4 c pointers

我在c中处理指针,当我运行以下代码时,我得到"l"作为输出!为什么?

char *s = "Hello, World!";
 printf("%c", 2[s]);
Run Code Online (Sandbox Code Playgroud)

2 [s]表示什么?

Gri*_*han 7

2[s]s[2]因为编译器将两者都转换为*(2 + s)

这里有一个很好的链接:为什么index [array]和array [index]在C中都有效?

  • @IdanArye那是错的.表达式"s + 2"总是与"2 + s"相同.指针算术始终适用于指向类型的倍数. (5认同)