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

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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容