当前位置: 首页 > news >正文

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


http://www.mrgr.cn/news/33552.html

相关文章:

  • 导游基础知识丨各民族民俗知识节选
  • 【目标检测】【Ultralytics-YOLO系列】Windows11下YOLOV5人脸目标检测
  • 【activiti工作流源码集成】springboot+activiti+mysql+vue+redis工作流审批流集成整合业务绑定表单流程图会签驳回
  • vue3面试题1|[2024-11-12]
  • Vue自定义指令详解——以若依框架中封装指令为例分析
  • 成都睿明智科技有限公司解锁抖音电商新玩法
  • 对网页聊天项目进行性能测试, 使用JMeter对于基于WebSocket开发的webChat项目的聊天功能进行测试
  • 机器学习算法那些事 | TPAMI 2024.9 | FeatAug-DETR:通过特征增强丰富DETRs的一对多匹配
  • 【人工智能】在大型活动中的应用案例
  • 带你0到1之QT编程:十七、Http协议实战,实现一个简单服务器和一个客户端进行http协议通信
  • Python 虚拟环境安装使用(Anaconda 完整实操版)
  • stable diffusion 神经网络插件 controlnet 的安装,很详细
  • 自学笔记之TVM编译器框架 ,核心特性,模型优化概述,AI应用落地
  • 【C++初阶】模版进阶
  • 6、论文阅读:水下图像增强基准数据集及其他数据集
  • go语言 swagger 查询 json 字段注释
  • REST-系统架构师(六十九)
  • mysql配置相关命令
  • 设计模式之策略模式例题
  • 【HTTPS】对称加密和非对称加密
  • 【设计模式】万字详解:深入掌握五大基础行为模式
  • 存储系统概述
  • 【动态库的加载】【进程地址空间(三)】
  • 828华为云征文 | 使用Flexus X实例搭建Dubbo-Admin服务
  • 如何让程序等待输入
  • Redis数据结构之zset