指针的运算有哪些

指针的运算可以有很多,不是书本上或老师讲的只有加减运算。指针其时还有别的运算。大家可以大胆的去想,不要被书本上的知识束缚了自己的思考。

为什么书本上一般都只讲指针的加减运算,因为只有加减运算有实际意义

指针加,就是指针后移,

指针减,就是指针前移

加/减1代表移动一个类型宽度,这也说明了为什么void*类型指针不能做加减运算,因为void*指针编译器无法知道一次要移动多少个字节。

下面大家想个问题,指针的加减运算是将它当作变量,哪指针可以当作变量,C++中关于变量的运算符不就都可以用于指针运算了吗?C++运算符优先级

这个想法不错,写段代码来验证。

指针运算结果是,运算结果没有意义的C++都没有定义,所以都编译错误 ,| 、*、/、%这类都不能用作指针运算。还有操作符重载有指针被重载,编译也不会让通过。报错如下:

其它指针运算可正常编译输出如下:

以上没有将全部操作符作一一测试,但可以肯定的是,只有对指针运算有意义的,C++才会定义,无意义的运算不会通过编译。这点也说明了指针与变量的一个区别,所以不能把指针完全当作变量看待。也不要试图对指针进行操作符重载。

所以大家在学习编程时,要多写代码,多测试自己的想法,这样才会成长。