C++ typedef 关键字

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)类型的函数指针.
原文地址:https://www.cnblogs.com/teng-IT/p/5983552.html