如何解释输出?

时间:2013-05-22 10:36:47

标签: c pointers

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

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

2 [s]表示什么?

5 个答案:

答案 0 :(得分:7)

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

这是一个很好的链接:why are both index[array] and array[index] valid in C?

答案 1 :(得分:3)

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

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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

答案 4 :(得分:0)

这是写s[2]的另一种方式,它们的意思相同。在这种情况下,它会打印字符串的第3个字符,即'l'