【发布时间】:2015-06-10 09:01:58
【问题描述】:
众所周知,数组名称衰减为指针,例如a[i] 等价于*(a+i)。我偶然发现了一个问题,要求我预测以下输出:
int main(void)
{
printf("%c", "abcdefgh"[4]);
return 0;
}
他们说的答案是e,他们给出的原因是a[4]被转换成*(a+4),其中a是数组a的基地址在类似的行上我们可以找到上面的输出问题。
但是我怎么不理解 a[i] 衰减到 *(a+i) 因为编译器就是这样处理它,但是在上面的代码 sn-p 中我们将如何以及为什么要处理 "abcdef"[4] 这个?
【问题讨论】: