#define和typedef的比较以及#define与函数的不同

#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不仅可以定义类型取别名,而且可以定义常量和变量。
那么#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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值