于Head First C第60页:
int doses[] = {1,3,2,1000}
printf("服用%i毫克的药",3[doses]);
书中答案,于63页:
doses[3] == *(doses + 3) == *(3 + doses) == 3[doses]
数组
实际是指针
,指针的加法 +N 其实是在指针内存地址的基础上+sizeof(执针类型)*
N。
简单来说就是向后移动N个数组。
即:doses+3
是从doses
开始算(首地址)向后移动3
个元素,还是指针。
前面加*
就是取地址的值。
所以*(3+doses)
==doses[3]
, 也等于3[doses]
。(一个意思,不通写法)
这种写法真的很诡异......
网友评论