-1

我想知道为什么这段代码正在运行。

代码:

#include <stdio.h>

int main(int argc, char* argv[])
{
        char* c = "1234567";
        printf("%c\n", 5[c]);

        return 0;
}

结果:

6

4

2 回答 2

4

如果您对a[b]语法感到困惑,那么只需刷新您的 C 知识即可。

a[b]定义为*(a + b)和 因为a+b与 相同b+a,所以a[b]b[a]

于 2013-04-18T05:41:47.120 回答
0

在 C 中,数组索引的工作方式如下,例如 a[i] 它实际上被编译器解释为 *(a+i) 所以它可以写成 *(i+a) 因为加法是可交换的。因此 a[i] == i[a]。

于 2013-04-18T08:33:51.053 回答