两个同类型的指针相减的差是一个整数=这两个指针的地址值的差除以sizeof(指向的类型)。
两个不同类型的指针不能相减。看个例子:pointerMinus.cpp
#include
<
iostream
>

int
main()
{
int s[25];
std::cout << &s[0] << std::endl;
std::cout << &s[24] << std::endl;
int * p = &s[0] , * t = &s[24];

std::cout << "sizeof(int)=" << sizeof(int) << std::endl;
std::cout << t-p << std::endl;
}
编译运行结果:
$ g++ -o PM pointMinus.cpp
$ ./PM
0xbfc26630
0xbfc26690
sizeof(int)=4
24
[解释]
两个地址相减:0xbfc26690 - 0xbfc26630 =60 (十六进制的!)即 16*6 = 96(十进制的!)
sizeof(int)=4,t-p = 96/4=24。
两个不同类型的指针不能相减。看个例子:pointerMinus.cpp















编译运行结果:
$ g++ -o PM pointMinus.cpp
$ ./PM
0xbfc26630
0xbfc26690
sizeof(int)=4
24
[解释]
两个地址相减:0xbfc26690 - 0xbfc26630 =60 (十六进制的!)即 16*6 = 96(十进制的!)
sizeof(int)=4,t-p = 96/4=24。