Head First C 学习之3[doses]问题

2016-03-16  本文已影响28人  燚随风

于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]。(一个意思,不通写法)
这种写法真的很诡异......

上一篇下一篇

猜你喜欢

热点阅读