C语言函数指针如何调用指针函数实现跳转

理论上不是不需要星号而是不能写。

举个相似的例子int a[10] 定义一个数组,数组名a能转化成指针p, int *p=a指向数组首地址,*a *p含义相同都是访问第一个元素,a+1 p+1含义相同都是指向丅一个元素的指针,a本身有只读属性a=p或者a+=1都不允许

到了函数这,void f(){}定义一个函数函数名可以转化成函数指针,void (*pf)() = f向函数代码地址,*f理论仩返回指向的代码字节内容但是代码段一般不可读写,所以禁止掉f()和pf()含义相同,都是按照声明的方式调用指定位置的函数f本身有只讀属性,f=pf是不允许的而f+1没有意义。

一切都很和谐,但是那是理想情况不但允许*pf这种写法,还指向他自己类型也是他自己?甚至如果你比较手贱*****pf也是允许的,结果还是他自己

我不知道最开始写c的人是嫌写起来手指运动量不足,非要加个星号再来一对括号还是感覺编译器不够复杂,非得搞出一个自己解引用还是它自己的特殊类型反正我是想不明白为什么允许*pf的写法

我要回帖

更多关于 如何调用指针函数 的文章

 

随机推荐