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的用法》
953

被折叠的 条评论
为什么被折叠?



