美文网首页
Head First C 学习之3[doses]问题

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

作者: 燚随风 | 来源:发表于2016-03-16 11:25 被阅读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]。(一个意思,不通写法)
    这种写法真的很诡异......

    相关文章

      网友评论

          本文标题:Head First C 学习之3[doses]问题

          本文链接:https://www.haomeiwen.com/subject/yumqlttx.html