0.先考慮怎樣聲明一個內(nèi)置類型的指針
int i;
int *i_p;
直接加個*就好了
1.對于函數(shù)聲明,我們有
double pow(double,int);
聲明了一個接受double、int兩個參數(shù)的返回為double的函數(shù)pow
2.那么
double* pow_p(double,int);
是不是就是就是一個指向pow函數(shù)的指針呢?
3.可惜并不是
這是因為運算符的優(yōu)先順序:()比*優(yōu)先級高,所以上面的等價于
double* (pow_p(double,int));
這聲明了一個返回double*的函數(shù)
真正要聲明一個指向函數(shù)的指針,要加括號改變其結(jié)合順序
double (*pow_p)(double,int);
注意參數(shù)簽名要一致,否則會報錯,例如指針只有一個參數(shù)double,則:
不能將 double()(double,int)類型的值分配到double()(double)類型的實體
此時就可以讓其指向一個函數(shù)并調(diào)用了
pow_p=&pow;
(*pow_p)(3.5,2);