理解这个 C 数组语法 - 3[arr]
Understanding this C Array syntax - 3[arr]
我正在阅读 Head First C 并且到目前为止进展顺利,但我在这个例子中遇到了问题 -
int doses[] = {1, 3, 2, 1000};
printf("Issue dose %i", 3[doses]);
结果="Issue dose 1000"
我知道这是做什么的,它访问剂量数组的索引 3。从技术上讲,我的理解是它将三个整数的大小添加到数组中第一个元素的指针地址(剂量变量)
这本书解释说它有效,因为
doses[3] == *(doses + 3) == *(3 + doses) == 3[doses]
我一直坚持到 *(3 + 剂量) == 3[剂量] 之间的最后跳跃。鉴于 doses[3] 对我来说很容易掌握,也许我没有正确理解 [] 的意义?
C标准定义[]
运算符如下:
doses[3] == *(doses + 3)
Therefore doses[3] will evaluate to:
*(doses + 3)
and 3[doses] will evaluate to:
*(3 + doses)
希望对您有所帮助 ;)
我正在阅读 Head First C 并且到目前为止进展顺利,但我在这个例子中遇到了问题 -
int doses[] = {1, 3, 2, 1000};
printf("Issue dose %i", 3[doses]);
结果="Issue dose 1000"
我知道这是做什么的,它访问剂量数组的索引 3。从技术上讲,我的理解是它将三个整数的大小添加到数组中第一个元素的指针地址(剂量变量)
这本书解释说它有效,因为
doses[3] == *(doses + 3) == *(3 + doses) == 3[doses]
我一直坚持到 *(3 + 剂量) == 3[剂量] 之间的最后跳跃。鉴于 doses[3] 对我来说很容易掌握,也许我没有正确理解 [] 的意义?
C标准定义[]
运算符如下:
doses[3] == *(doses + 3)
Therefore doses[3] will evaluate to:
*(doses + 3)
and 3[doses] will evaluate to:
*(3 + doses)
希望对您有所帮助 ;)