我正在处理c中的指针,当我运行以下代码时,我得到“l”作为输出!为什么呢?
char *s = "Hello, World!";
printf("%c", 2[s]);
2 [s]表示什么?
答案 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'