typedef :為現有類型創建別名。
書寫typedef的聲明:
技巧 -如果定義一個變量的語句是合法的,那么在它前面加上typedef就一定合法,並且原來的變量名就成為了別名。
1 #include<iostream> 2 using namespace std; 3 //聲明四個函數 4 int Add(int,int); 5 int Sub(int,int); 6 int Mul(int,int); 7 int Div(int,int); 8 //定義指向這類函數的指針類型 9 typedef int (*FP_CALC)(int,int); 10 //聲明一個函數s_calc_func,它根據操作符op 返回指向相應的計算函數的指針 11 int (*s_calc_func(char op))(int,int); 12 //聲明一個函數clac_func,它的作用與s_calc_func相同,但是聲明語句要簡單的多。 13 FP_CALC calc_func(char); 14 //根據op返回相應的計算結果值 15 int calc(int a,int b,char op); 16 17 int Add(int a,int b){ 18 return a+b; 19 } 20 int Sub(int a,int b){ 21 return a-b; 22 } 23 int Mul(int a,int b){ 24 return a*b; 25 } 26 int Div(int a,int b){ 27 return b?a/b:-1; 28 } 29 //這個函數的用途與下一個函數的用途和調用方式的完全相同,參數為op,而不是最后的兩個整數 30 int (*s_calc_func(char op))(int,int){ 31 return calc_func(op); 32 } 33 34 FP_CALC calc_func(char op){ 35 switch(op){ 36 case'+':return Add; 37 case'-':return Sub; 38 case'*':return Mul; 39 case'/':return Div; 40 } 41 return NULL; 42 } 43 int calc(int a, int b,char op){ 44 FP_CALC fp = s_calc_func(op); 45 //FP_CALC fp = calc_func(op);與上面一樣 46 if(fp)return fp(a,b); 47 else return -1; 48 } 49 int main(){ 50 int a =100,b =20; 51 cout<<"calc("<<a<<","<<b<<",+)="<<calc(a,b,'+')<<endl; 52 cout<<"calc("<<a<<","<<b<<",-)="<<calc(a,b,'-')<<endl; 53 cout<<"calc("<<a<<","<<b<<",*)="<<calc(a,b,'*')<<endl; 54 cout<<"calc("<<a<<","<<b<<",/)="<<calc(a,b,'/')<<endl; 55 }
int (*s_calc_func(char op))(int,int);的意思是:調用s_calc_func(char op)函數 返回的是int (*pf) (int,int)類型的函數指針.
