指针运算不同于算数运算,不能简单加减

     必须注意,指针运算不同于常规的算术运算,一般地,40000+2的结果是40002,但当一个指针加上或减去一个整数时,指针并非简单地加上或减去该整数值,而是加上该整数与指针引用对象大小的乘积,而对象的大小则和机器与对象的数据类型有关。例如在上述情况下,语句

ptra+=2;

的结果是40000+4*2=40008, ptra也随之指向元素a[2],同理,诸如语句

ptra-=2;
ptra++;
++ptra;
ptra--;
ptra--;

等的运算原理也都与此相同,至于指针与指针相减,则会得到在两个地址之间所包含的数组元素的个数,例如ptra1包含存储单元40008,ptra2包含存储单元40000,那么语句

x = ptra1 - ptra2;

得到的结果就是2(仍假设整数在内存中占4个字节)。因为除了数组元素外,我们不能认为两个相同类型的变量是在内存中连续存储的,所以指针算数运算除了用于数组外没有什么意义。

posted @ 2009-03-11 17:32  淮北橘子  阅读(963)  评论(0编辑  收藏  举报