指针的算术运算与解引用
指针的加减:指针的加减是是加类型(指针的类型,)类型是几个字节,指针就向前或者向后走几个字节。
指针的解引用:指针的类型决定了在对指针进行解引用的时候,能访问多少个字节,比如对char*的指针变量进行解引用只能访问一个字节,对int*的指针变量解引用能访问4个字节。一般这种操作出现在对地址的强转上,借以扩充或者缩小可以访问的地址的范围。这个在多态的虚函数表那块有应用。
C++中不会对数组越界进行检测。
void类型的指针因为对象类型不明确(即不知道是什么类型,不知道访问多少个字节),所以不允许加整数,在vs2013上是这样的。
指针相减:这个是有前提的,当两个指针都指向一个数组中的元素时,两个指针可以相减,相减的结果是一个有符号整数,表示两个指针在内存中的距离(以数组元素为单位或者说数组元素的类型为单位,而不是以字节为单位)。这个详见https://blog.youkuaiyun.com/yi_zz32/article/details/48197973。书籍c和指针6.13节也有。如果这两个指针不是指向数组中的两个元素,那么这个相减的结果是无意义的。或者说是未定义的。就像不同学校的宿舍号相减,也不能得到他们之间相差了几个宿舍
指针不能相加,相除,相乘,因为不知道表示的是什么意思。
指针的关系运算:
也就是> < >= <=,这些,不过前提是在一个数组,即就是一块内存空间,这样指针的大小就是地址的高低.