typedef是一种高级数据特性,它能使某一类型创建自己的名字

typedef unsigned char BYTE;
typedef struct man MAN;
BYTE b = 0x12;

  1. #define不同,typedef仅限于数据类型,而不是能是表达式或具体的值
  2. typedef是编译器处理的,而不是预编译指令
  3. typedef#define更灵活

直接看typedef好像没什么用处,使用BYTE定义一个unsigned char。使用typedef可以增加程序的可移植性

通过typedef定义函数指针

函数原型及调用

const char *getsubstr(const char *src, const char *str)
{
return strstr(src, str);
}
const char *func(const char *(*s)(const char *, const char *), const char *src, const char *str)

使用typedef以后的函数调用

const char *getsubstr(const char *src, const char *str)
{
return strstr(src, str);
}
typedef const char *(*SUBSTR)(const char *, const char *);
const char *func(SUBSTR p, const char *src, const char *str);

在程序当中如果是定义一个可读的常量,适合用#define

如果定义的是一个具体的数据类型,那么typedef更加适合。

如果是定义一个函数指针,那么基本就typedef

最新文章

  1. Spark入门实战系列--6.SparkSQL(中)--深入了解SparkSQL运行计划及调优
  2. JavaScript对象(Object)
  3. mysql 删除重复数据保留只保留一条
  4. socket.io稳定性及事件测试
  5. 怒刷DP之 HDU 1069
  6. [Hadoop源码解读](一)MapReduce篇之InputFormat
  7. codeforces D. Count Good Substrings
  8. zzuli生化危机(dfs)
  9. 使用springboot完成密码的加密解密
  10. 2018 年 3 月 iOS架构师 面试总结
  11. Skyline TerraExplorer 7.0- 扩展信息树
  12. leetCode53. 最大子序和
  13. linux-kernel-4.4 移植 (1)启动
  14. linux下maven的安装
  15. 20181114教学sql
  16. 为什么要将Apache与Tomcat集成?(或不)
  17. Cracking The Coding Interview 3.2
  18. thread == 售票
  19. MySql服务初始化、安装、启动
  20. TopComponent设置某个控件焦点

热门文章

  1. sln、db、opendb、vcxproj、filters、user文件跟踪说明
  2. 用go iris 写的一个网页版文件共享应用(webapp)
  3. Visio:为什么按下方向键,选中的目标不动,绘图区(页面)却在移动
  4. Bootloader - Main system - Recovery的三角关系
  5. hdu 5773 最长递增子序列 (nlogn)+贪心
  6. TensorFlow使用记录 (十二): ℓ1 and ℓ2 Regularization
  7. AcWing:167. 木棒(dfs + 剪枝)
  8. HTML标签功能分类
  9. java生成10个不相等的1-20的随机数
  10. 自定义圆形图片控件CircleImageView的实现