我想知道为什么这段代码正在运行。
代码:
#include <stdio.h>
int main(int argc, char* argv[])
{
char* c = "1234567";
printf("%c\n", 5[c]);
return 0;
}
结果:
6
答案 0 :(得分:4)
如果您对a[b]
语法感到困惑,那么只需刷新您的C知识。
a[b]
定义为*(a + b)
,由于a+b
与b+a
相同,因此a[b]
和b[a]
。
答案 1 :(得分:0)
在C中,数组索引的工作原理如下,例如a [i]它实际上由编译器解释为*(a + i),因此它可以写成*(i + a),因为加法是可交换的。 因此a [i] == i [a]。