char指针奇怪的表达式c

问题描述:

我想知道为什么这段代码正在运行。char指针奇怪的表达式c

代码:

#include <stdio.h> 

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

     return 0; 
} 

结果:

如果你感到困惑与a[b]语法,那么就刷新你的C知识。

a[b]被定义为*(a + b)并且由于a+b相同b+a,所以是a[b]b[a]

+0

感谢您的快速回复。 – ExtremeBlue 2013-04-18 06:01:25

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