4

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

char *s = "Hello, World!";
 printf("%c", 2[s]);

2[s] 是什么意思?

4

5 回答 5

7

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

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

于 2013-05-22T10:38:55.740 回答
3

s[2] 和 2[s] 都是一样的。这就是 C 编译器的构建方式。内部 s[2] 被视为 *(s+2)。这类似于 2[s]。

于 2013-05-22T10:39:51.100 回答
3

这将打印s[2],即 l。这是因为s[i]在语法上等于*(s + i)。因此s[2]2[s ] 都被转换*(s + 2)。

于 2013-05-22T10:40:43.053 回答
2

2[s] 与 s[2] 相同,可以写成 *(s+2)。

于 2013-05-22T10:39:10.187 回答
0

这是另一种写作方式s[2],它们的意思是一样的。在这种情况下,它将打印字符串的第三个字符,即“l”

于 2013-05-22T10:39:03.927 回答