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);
网友评论