我正在阅读 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]对我来说很容易掌握,也许我没有正确理解[]的重要性?
C 标准定义[]
运算符如下:
doses[3] == *(doses + 3)
Therefore doses[3] will evaluate to:
*(doses + 3)
and 3[doses] will evaluate to:
*(3 + doses)
希望它对你有所帮助;)