4.2.3 同类型指针相减

    两个同类型指针相减,返回值是个整数,其值可用下列公式进行计算。


    (指针1的值-指针2的值)/指针所指变量占用的内存字节数代码4.4同类型指针相减PointerOperation <————————————-文件名:example404.cpp——————————————-> 01 #include<iostream> 02 int main() 03 { 04 using namespace std; 05 int n=0,*pN=&n; 06 int m=0,*pM=&m; 07 cout<<"pN的值为:"<<pN<<endl; 08 cout<<"pM的值为:"<<pM<<endl; 09 cout<<"pN-pM="<<pN-pM<<endl;//两个同类型指针相减 10 return 0; 11 }

    输出结果如下所示。


    pN的值为:0012FF7C pM的值为:0012FF74 pN-pM=2

    【代码解析】根据代码第9行pN-pM是两个同类型指针相减,两个指针的值相减是8,而int型在示例系统中占4个内存字节,所以返回结果为2。

    注意

    当指针间的差值不是指针所指变量占用内存的整数倍时,只保留其整数部分。

    在进行指针运算时,程序可能会意外地访问其他变量的内存空间,产生破坏性的后果,因此,要谨慎使用指针运算。