问答详情
源自:4-5 函数栈以及数据段内存

int (*pquadrate)(int a) = &quadrate;是啥意思?

不太明白(*pquadrate)后面为啥还有个(int a) ??

提问者:帅踢锅 2015-07-28 21:47

个回答

  • onemoo
    2015-07-29 08:40:43
    已采纳

    这是函数指针声明。

    这是将pquadrate声明为函数指针,它指向的是有一个int型参数,返回值为int的函数。这语句同时将pquadrate初始化为quadrate的地址(显然quadrate应该是个函数名)。


    一步一步讲这个声明:

    • 这语句声明的是pquadrate变量,前面有个*,而且是用小括号和变量名括起来的(*pquadrate),表明这个变量名优先和*结合。声明变量时前面有*就代表这个变量是指针,所以pquadrate是个指针。那它指向什么呢?

    • 接着看,后面有小括号,前面有类型,表明是个函数。参数就是int a,返回值是int型。所以pquadrate是指向这样的函数的指针。

  • weixin_慕雪4064546
    2020-05-17 20:02:20

    厉害了,大神呀

  • 极速传说201466
    2017-04-29 15:16:00

    厉害 。。。


  • Dereksss
    2017-02-25 17:27:21

    原来如此

  • bkcarlos
    2016-07-08 20:30:38

    谢谢你的解释!