搜索
您的当前位置:首页正文

在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);
Top