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)类型的函数指针.