4.2 指针的运算
C++常常把地址当成整数来处理,但这并不意味着程序员可以对地址(指针)进行各种算术操作,事实上,指针所能做的操作是十分有限的,像指针与其他变量的乘除、两个指针间的乘除和两个指针相加都是没有意义、不被编译器所接受的。合法的运算具体包括指针与整数的加减,其中包括指针的自增和自减、同类型指针间的比较和同类型的两指针相减。
4.2.1 指针与整数的加减
指针与整数相加减,表示指针在内存空间中向下或向上移动整数个单位,该单位是多少个内存字节取决于指针所指变量的类型,short型指针每次移动两个字节,double型指针每次移动8个字节。
注意
将指针变量增加1,其增加的值等于指向的类型占用的内存字节数。
图4.4是指针与整数相加减时指针移动的示意图,对指针变量进行加N运算时表示如下。
指针变量新值=指针变量当前值+N*指针所指类型占 用的内存字节数
对指针进行自增和自减(++和—)处理时,应特别注意,因为“++、—”和间接引用符*具有相同的优先级,当它们在同一个表达式中出现时,应准确添加括号,避免歧义,否则,会按结合性来决定运算顺序,对单目运算符来说,其结合性都是自右向左进行的。