#define和typedef的比较以及#define与函数的不同
来源:互联网 发布:数据分析表格 编辑:程序博客网 时间:2024/05/22 03:10
#define和typedef的比较
1:typedef是声明新的类型名,使用新的类型名代替原有的类型名,
而且typedef是在编译的时候有用,所以会进行类型的检测。
而#define是在预编译的时候进行简单的宏替换,所以不会进行检测。
2:对待指针时的不同
例如:
#define int* Pi;Pi a,b;的意思是定义了一个指向整形的指针和第一了一个整形指针。
typedef PI int*;PI a,b;的意思是定义了两个都指向整形的指针。
由此可见,#define是一种替换,而typedef包含了一种类型,具有整体“封装”的作用。
3:末尾的不同
typedef定义时后面必须有分号,但#define后面如果是类型的话,加分号就会出错,如果是一条语句的话,就会当做一个空语句来实行。
4:定义时的顺序不同
#define定义时是替换量在前面,而typedef替换时是替换量在后面。
5:#define不仅可以定义类型取别名,而且可以定义常量和变量。
1:typedef是声明新的类型名,使用新的类型名代替原有的类型名,
而且typedef是在编译的时候有用,所以会进行类型的检测。
而#define是在预编译的时候进行简单的宏替换,所以不会进行检测。
2:对待指针时的不同
例如:
#define int* Pi;Pi a,b;的意思是定义了一个指向整形的指针和第一了一个整形指针。
typedef PI int*;PI a,b;的意思是定义了两个都指向整形的指针。
由此可见,#define是一种替换,而typedef包含了一种类型,具有整体“封装”的作用。
3:末尾的不同
typedef定义时后面必须有分号,但#define后面如果是类型的话,加分号就会出错,如果是一条语句的话,就会当做一个空语句来实行。
4:定义时的顺序不同
#define定义时是替换量在前面,而typedef替换时是替换量在后面。
5:#define不仅可以定义类型取别名,而且可以定义常量和变量。
那么#define和函数有什么不同那。
1:函数有他的格式,对于他的参数必须有一个类型,但是用#define就可以来定义与类型无关的。
例如:#define malloc(n,type) ((type*)malloc((n)*sizeof(type)))
pi=malloc(3,int)=((int*)malloc((3)*sizeof(int)))是不是方便很多。
2:从空间和时间来说,#define在预编译的时候就进行了替换,但是它要替换代码里面的每一行,所以,它有点拿空间换时间的感觉,而函数在调用的时候为它分配空间,结束的时候释放了,所以空间是固定的,不会改变,但是分配空间和回收空间要话费时间。
阅读全文
0 0
- #define和typedef的比较以及#define与函数的不同
- typedef与#define的不同
- typedef的用法,与#define的不同
- typedef与define的一些比较
- typedef和#define的用法以及区别
- typedef和#define的用法以及区别
- #define和typedef比较
- typedef和#define的用法与区别
- typedef和#define的用法与区别
- typedef和#define的定义与区别
- typedef和#define的用法与区别
- typedef和#define的用法与区别
- typedef和#define的用法与区别
- typedef和#define的用法与区别
- typedef和#define的用法与区别
- typedef和#define的用法与区别
- typedef和#define的用法与区别
- typedef和#define的用法与区别
- FTP服务器搭建
- bzoj1231 [Usaco2008 Nov]mixup2 混乱的奶牛(状压dp)
- Android安装运行中出现的问题
- 2017-10-22烦恼日记
- 15个顶级Java多线程面试题及回答
- #define和typedef的比较以及#define与函数的不同
- 【C语言】判断闰年+判断素数
- 洛谷P3932 浮游大陆的68号岛
- 用Python实现SMTP邮件发送
- C语言计算文件MD5值
- Git 版本控制 和 github 使用( Android项目为例 )
- 从两个角度解释电容退耦原理
- 线程和fork-
- 7-14 输出全排列(20 分)