C++中,指针在进行加法运算时,运算单位是由指针的类型的决定的。
比如,指针P的类型long,那么当执行一次P++时,地址移动长度为4个字节。
下面偶们来看一个例子:
long a;//赋值
long *p = &a;//取址
a = ( long ) ( ( ( long* ) 4 ) + 5 );//先将具体的数字4转成long指针类型,然后再加上5,再强制转成long类型,最后赋值给a。
这段代码a的输出结果为24,计算公式为:4(指针的初始值为4)+5*4(4为long类型的字节长度)= 24.
同样,如果把上段代码改为:
long a;
long *p = &a;
a = ( long ) ( ( ( double* ) 4 ) + 5 );
那么输出结果就为44. 公式为:4+5*8
比如,指针P的类型long,那么当执行一次P++时,地址移动长度为4个字节。
下面偶们来看一个例子:
long a;//赋值
long *p = &a;//取址
a = ( long ) ( ( ( long* ) 4 ) + 5 );//先将具体的数字4转成long指针类型,然后再加上5,再强制转成long类型,最后赋值给a。
这段代码a的输出结果为24,计算公式为:4(指针的初始值为4)+5*4(4为long类型的字节长度)= 24.
同样,如果把上段代码改为:
long a;
long *p = &a;
a = ( long ) ( ( ( double* ) 4 ) + 5 );
那么输出结果就为44. 公式为:4+5*8