博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言define和typedef区别和使用
阅读量:6640 次
发布时间:2019-06-25

本文共 1278 字,大约阅读时间需要 4 分钟。

  define完全可以理解替换,typedef代表别名。听着差不多的意思,那2者区别在哪?

  先来个简单例子查看基本使用。

//define和typedef区别#define DB double  //替换  define 被替换的内容 替换的内容typedef double db; //别名  typedef 原来的类型名 新的别名//typedef需要分号 ,typeof 去掉以后符合语法规则,define去掉就会报错 void main(){     //看不出区别     DB d1 = 1.2,d2=1.8; //等价 double d1 = 1.2,d2=1.8;     db d3 = 1.9,d4=2.3; //等价  double d3 = 1.9,d4=2.3;      printf("%f,%f",d1,d2);     printf("\n%f,%f",d3,d4); }

  上面唯一看出的区别就是typedef需要分号。

  通过指针变量来测试2者的区别

#define DP double *typedef double * dp;void main2(){    DP dp1,dp2; //DP是替换,等价 double *dp1,dp2; //dp1是指针占4个字节,dp2就是double类型数据8字节    dp dp3,dp4; //都是4字节的指针, 等价于 dobule *dp3,*dp4;    printf("%d,%d", sizeof(dp1),sizeof(dp2));  //4,8    printf("\n%d,%d",sizeof(dp1),sizeof(dp2)); //4,4}

  通过上面例子可以看出define完全就是替换,typedef则不同。

  最后简单说明下,利用利用define和typedef构建函数指针 

1 void print(int num) 2 { 3     printf("时间%d",num); 4 } 5  6 void main() 7 { 8     //函数指针 9     void(*p)(int num) = print;10     p(10);11 }

  但是像上面第9行代码那样写多了会觉得很烦啊,可以使用define和typedef来构建

1 //typedef int* pint; //给int类型指针别名 2 typedef void(*p)(int num); //给函数指针类型别名 ,p是类型的别名 3 #define Pprint(X) void(*X)(int num) //带参数的宏模式 4  5 void main() 6 { 7     //函数指针 8  9     //利用typedef10     p p1 = print;11     p1(10);12 13     //利用define14     Pprint(p2) = print;15     p2(33);16 }

 

转载地址:http://ccovo.baihongyu.com/

你可能感兴趣的文章
js 异步请求封装
查看>>
C# 中的"yield"使用
查看>>
BIO、NIO、AIO
查看>>
ServerSocketChannel简述
查看>>
怎么旋转PDF文件的方向并保存成功
查看>>
关于C++ error PRJ0003 : Error spawning 'rc.exe'.
查看>>
NOIP2008普及组题解
查看>>
《软件技术基础》实验指导 实验三
查看>>
抓包工具Charles
查看>>
数据库MySQL之 视图、触发器、存储过程、函数、事务、数据库锁、数据库备份、事件...
查看>>
oracle索引组织表,簇表
查看>>
XSLT之路2---脚本使用
查看>>
2014.12.5 ios实现相册多选操作
查看>>
Expect自动化交互程序
查看>>
jenkins-参数化构建(二)插件:Extended Choice Parameter
查看>>
前端开发规范
查看>>
(SPOJ687,后缀数组)
查看>>
30岁前不要去在乎的29件事
查看>>
数据调用方法
查看>>
在Hadoop中ResourceManager是干什么的?
查看>>