typedef 用法
来源:互联网 发布:软件协会会员牌匾 编辑:程序博客网 时间:2024/06/10 01:57
typedef是c语言中给类型赋别名的工具。且不同于#define的宏义,在预编译时工作。typedef在运行时工作。
typedef不能与auto、extern、mutable、static、register等关键字出现在同一个表达式中。
它有如下优点与用法:
1.按功用设计,方便理解代码。
typdef int size; // 定义size getSize(); // 使用2.简化代码,隐藏数组、指针和模板类
typdef char str[300]; // 定义str s; // 等价于 char str[300];typedef char* ptr; // 定义ptr a; // 等于 char* a; typedef std::vector<int> array; //定义array a; // 等价于std::vector<int>3.平台无关数据类型
这个也是最常用的,比如整型在各个平台上长度可能不一样,使用typedef 可以以统一的名称使用相同的整型类型。
否则,平台A使用INT32表示32位整型,平台B使用__INT表示32位整型。这时分别使用
typdef INT32 int;typdef __INT int;就可以以统一的int在这两个平台上使用32位整型数据。
4.函数指针
这个功能非常有用。
普通函数
int func(int a){return a;}typedef int (*F)(int);F f = func;(*f)(2);
类成员函数
class A{public:int func(int a){return a;}};typedef int (A::*CF)(int);CF cf = &A::func;A a;(a.*cf)(2);A* a2 = &a;(a2->*cf)(2);指针函数在循环场景中需要确定调用函数时很有用,类似于:
int funcA(){...}int funcB(){...}bool flag = true;for(int i=0; i<n; ++i){ if(flag) funcA(); else funcB();}这种情况下使用函数指针非常方便。
int funcA(){...}int funcB(){...}typdef int(*F)();bool flag = true;F f;if(flag) f = funcA;else f = funcB;for(int i=0; i<n; ++i){ f();}
0 0
- TYPEDEF用法
- typedef用法
- typedef用法
- typedef用法
- typedef用法
- typedef用法
- typedef用法
- typedef 用法
- typedef用法
- typedef用法
- typedef 用法
- typedef用法
- typedef用法
- typedef用法
- typedef用法
- typedef用法
- typedef用法
- typedef用法
- 数据结构入门——栈与队列
- 使用SQLQuery 在Hibernate中使用sql语句
- 南邮 OJ 1163 活动安排问题
- HDU 5349(2015多校5)-MZL's simple problem(优先队列)
- dSYM 文件分析工具
- typedef 用法
- iOS-基本知识汇总
- Spark入门实战系列--1.Spark及其生态圈简介
- thinkphp+ueditor 上传图片显示:正在读取目录
- java加密解密技术(2) 单向加密MD5
- tomcat自动加载改变的class文件(无需重启tomcat)
- 程序员那些事
- SAPUI5 标准控件 事件 addEventDelegate
- 【移动开发-Android】androidpn实现消息推送