美文网首页程序员面试
在C语言中怎样声明一个指向函数的指针?

在C语言中怎样声明一个指向函数的指针?

作者: 陈继科 | 来源:发表于2017-11-02 15:01 被阅读41次

    0.先考虑怎样声明一个内置类型的指针

    int i;
    int *i_p;
    

    直接加个*就好了

    1.对于函数声明,我们有

    double pow(double,int);
    

    声明了一个接受double、int两个参数的返回为double的函数pow

    2.那么

    double* pow_p(double,int);
    

    是不是就是就是一个指向pow函数的指针呢?

    3.可惜并不是

    这是因为运算符的优先顺序:()比*优先级高,所以上面的等价于

    double* (pow_p(double,int));
    

    这声明了一个返回double*的函数
    真正要声明一个指向函数的指针,要加括号改变其结合顺序

    double (*pow_p)(double,int);
    

    注意参数签名要一致,否则会报错,例如指针只有一个参数double,则:
    不能将 double()(double,int)类型的值分配到double()(double)类型的实体
    此时就可以让其指向一个函数并调用了

    pow_p=&pow;
    (*pow_p)(3.5,2);
    

    相关文章

      网友评论

        本文标题:在C语言中怎样声明一个指向函数的指针?

        本文链接:https://www.haomeiwen.com/subject/clbopxtx.html