• 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)类型的函数指针.
  • 相关阅读:
    安装tomcat
    sed
    a'w'k
    dwr??
    tomcat-性能?
    windows清理命令
    markdown超链接怎么写?
    ※剑指offer系列19:二叉搜索树与双向链表
    剑指offer系列17:二叉搜索树的后序遍历序列
    剑指offer系列18:二叉树中和为某一值得路径
  • 原文地址:https://www.cnblogs.com/teng-IT/p/5983552.html
Copyright © 2020-2023  润新知