普通指针&函数指针,C++ & C都支持这2种形式的指针类型,可以对普通指针进行+ & -的运算,但是
指针运算只适用于[]形式,而并非一般形式的指针,而且+ & -也同样可以应用在函数指针[]上
普通指针&函数指针的赋值形式都是相同的使用 = 与&的组合形式来进行赋值,指针运算也同样适用于
class struct,等自定义的数据类型,进行指针运算时,每进行 +1 或者 -1 这种类型的+ & -运算都是使
用该类型所在系统的占用的字节容量来进行增加,如int所占用的是4字节,所以每次对int指针进行 +1 运
算时,它指向的[]都会移动到该[]的下1个元素,如果是double就会增加8字节,如此类推,如果是自定
义类型则根据该类型中所有域和函数所占用的字节大小所计算.函数指针的声明形式与普通指针有1些区别,
语法总结有以下2种返回值type (* 函数指针名称 )() 该形式是最普通的形式,返回值type (* (* 函数指
针名称 )( 参数类型 ) )() 该形式是带参数的函数指针的声明形式,返回值type (* (* 函数指针名称 )
( 参数类型 ) )()[] &返回值type (* 函数指针名称 )()[] 此2种形式为不带参数的函数指针[]&带
参数的函数指针[]的声明形式.判断函数指针声明的基础方式是一种左 - 右 - 左的判断形式从函数指
针的声明的中间开始(函数指针名称)从左 - 右 - 左观察周围的修饰符和运算符.如 (*cp)++, ++*++cp,
++*cp++, *cp++, ++*cp等指针运算都可以依靠上面2种方式来判断,像*cp++这种简单的指针运算完全可以
依靠运算符的优先级就能够明白,像++*++cp, ++*cp, 这类函数指针运算也可以同样依靠优先级和运算符的
顺序来得到的结果,如*cp++可以通过++运算符的优先级高于*运算符优先级从而理解是先进行指针的运算之
后在提取运算后指针指向的内容,而++*++cp可以通过运算符使用的顺序来理解,如先执行cp指针的++运算
之后再提取运算后指针所指向的内容之后在进行1次++运算在判断指针声明时的第二点是需要根据运算符优
先级来判断,指针运算时也是如此,指正声明的基础比较固定,但是可以根据各种不同的运算符来组合成
复杂的声明方式,对其应该根据左 - 右 - 左和运算符的优先级就可以准确的理解复杂的声明.指针函数
还有一种特殊的赋值方式,该方式是使用函数返回值来赋值,比如 C++ 中的 set_unexpected &
set_terminate 类似的函数的返回值是1个函数指针,所以也可以像使用普通的利用函数返回值来赋值的方
式来给函数指针赋值。