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]
。
答
在C语言中,数组索引的工作方式如下,例如[i]它实际上被编译器解释为*(a + i),所以它可以写成*(i + a),因为加法是可交换的。 因此a [i] == i [a]。
感谢您的快速回复。 – ExtremeBlue 2013-04-18 06:01:25