我在 c 中处理指针,当我运行以下代码时,我得到“l”作为输出!为什么?
char *s = "Hello, World!";
printf("%c", 2[s]);
2[s] 是什么意思?
2[s]
与s[2]
因为编译器将两者都转换为*(2 + s)
s[2] 和 2[s] 都是一样的。这就是 C 编译器的构建方式。内部 s[2] 被视为 *(s+2)。这类似于 2[s]。
这将打印s[2],即 l。这是因为s[i]在语法上等于*(s + i)。因此s[2]和2[s ] 都被转换为*(s + 2)。
2[s] 与 s[2] 相同,可以写成 *(s+2)。
这是另一种写作方式s[2]
,它们的意思是一样的。在这种情况下,它将打印字符串的第三个字符,即“l”