指针的运算,就如带单位的物理量运算,2米-1米等于1米,2千米-1千米等于1千米,数值都是1,但意义不同。当你在前面无缘无故引入sizeof(int)去计算地址值的时候,就必须考虑如何消除这个引入因素的影响。
归根结底还是那句老话:“很多时候,不知道细节恰恰有助于保护你。”C语言的设计,那种指针运算就已经确保了某种一致性,正如4楼所说的那样,做简单的去括号数学演算即可,这是语言设计要做到这样的,但偏偏你懂一点又不懂另一点,所以反而出现问题。那句话看起来虽然很矛盾,但实践证明那其实是真理——所有编程语言(包括硬件设计)的发展,都是往这个方向走。过去那种学软件之前先学硬件和汇编的观念,早已是过去式,不学还好,越学越迷茫。
归根结底还是那句老话:“很多时候,不知道细节恰恰有助于保护你。”C语言的设计,那种指针运算就已经确保了某种一致性,正如4楼所说的那样,做简单的去括号数学演算即可,这是语言设计要做到这样的,但偏偏你懂一点又不懂另一点,所以反而出现问题。那句话看起来虽然很矛盾,但实践证明那其实是真理——所有编程语言(包括硬件设计)的发展,都是往这个方向走。过去那种学软件之前先学硬件和汇编的观念,早已是过去式,不学还好,越学越迷茫。
授人以渔,不授人以鱼。