typedef的用法
typedef只有一种用法,那就是:
1,代替各种类型或某类(结构体)成员。
比如下列代码:
#include <iostream>
#include <string>
int main() {typedef int i;i e=3;int f=3;std::string t_or_f=(e==f)?"true":"false";printf("%s",t_or_f.c_str());
}
输出:
true
这是因为使用了typedef关键词使i的作用变成了int。所以e是整形变量。但如果你想创建一个名为i的变量,那你还是死心吧。
我们再看看第二个例子:
#include<iostream>
struct student{std::string name;int ID;float score;
};
typedef struct student stu;
stu a={"wang",201960522,91.5};
struct student b={"li",202050334,80.75};
int main(){stu* p = &a;std::cout<<p->name<<" "<<p->ID<<" "<<p->score<<std::endl;p = &b;std::cout<<p->name<<" "<<p->ID<<" "<<p->score;
}
输出:
这段代码中,我们用student创建了两个成员a和b,一个用了typedef关键词代替的创建方式,一个用的是原方法。之后用指针p继承a和b并打印。
2,可以运用指针函数
typedef运用指针函数,比如:
#include <iostream>
typedef int(*funcPtr)(int, int);
int add(int a, int b){return a+b;
}
int minus(int a, int b){return a-b;
}
int multiply(int a, int b{return a*b;
}
int dividing(int a, int b){if (b == 0) {std::cout<<"除数不能为 0!"<< std::endl;return 0;}return (float)a/b*1.0;
}
int main() {int num1,num2;char _operator;bool yes = true;funcPtr f = NULL;while (yes) {std::cout<<">";std::cin>>num1>>_operator>>num2;switch (_operator) {case '+':f = add;break;case '-':f = minus;break;case '*':f = multiply;break;case '/':f = dividing;break;default:std::cout << "无效运算符!" << std::endl;f=0;break;}std::cout<<f(num1, num2)<<std::endl;}
}
这段代码使用typedef进行指针函数,然后创建了add,minus等函数,之后初始变量,然后输入运算符和数字,根据运算符就改变指针,如果不是+,-,*和/。就显示“无效运算符”,最后根据指针运行函数。然后循环。
3,例子环节
格式1:
typedef 被代替 代替
格式2:
typedef 函数名(函数定义)
如果有什么问题的话,请指出。预告一下,下期我会更新《typename的用法》