理解这个C数组语法 - 3 [arr]

时间:2017-01-14 19:50:50

标签: c arrays pointer-arithmetic

我正在阅读Head First C并且进展顺利,但我遇到了这个例子的问题 -

int doses[] = {1, 3, 2, 1000};
printf("Issue dose %i", 3[doses]);

结果=“发出剂量1000”

我知道这是做什么的,它访问剂量数组的索引3。从技术上讲,我的理解是它将三个整数的大小添加到数组中第一个元素的指针地址(剂量变量)

这本书解释说它有效,因为

doses[3] == *(doses + 3) == *(3 + doses) == 3[doses]

直到最后跳跃*(3 +剂量)= = 3 [剂量]之间我才开始服用。鉴于剂量[3]对我来说很容易掌握,也许我不能正确理解[]的重要性?

1 个答案:

答案 0 :(得分:1)

C标准定义[]运算符如下:

doses[3] == *(doses + 3)

Therefore doses[3] will evaluate to:

*(doses + 3)
and 3[doses] will evaluate to:

*(3 + doses)

希望它对你有帮助;)