typedef和#define

整理自:http://www.cnblogs.com/heyonggang/p/3199216.html

定义

1.typedef是用来声明类型别名的,使用它一般是为了增加代码的可读性,它可以为一串很长的类型名起一个别名,使用这个别名可以达到与原类型名相同的效果。

typedef int INT;
//以下两行效果相同
int a;
INT a;

2.#define是一个宏定义命令,用来定义一个常量(包括无参常量和有参常量),它本身并不在编译过程中执行,而是在预处理阶段就已经完成了,因此不作任何正确性检查,只进行与含义无关的字符串替换。在使用宏定义时要注意括号的使用。

#define ADD(a,b) a+b;      //错误
//#define ADD(a,b) (a+b);  //正确 

int sum=ADD(1,2)*3;        //1+2*3

区别

1.typedef是C++的关键字,用来为一个已有的数据类型起别名;#define是C++的宏定义命令,用来定义一个宏定义常量。

2.typedef为一种数据类型起别名,带有一定含义;#define只做简单的字符串替换,不表达任何含义。

#define INTPTR1 int*
typedef int* INTPTR2;

INTPTR1 p1,p2;
INTPTR2 p3,p4;

上段代码中,INTPTR1 p1,p2; 和INTPTR2 p3,p4;两句作用完全不同:

(1)INTPTR1 p1,p2;进行字符串替换后变成int* p1,p2;表示声明一个指针变量p1和一个整型变量p2。

(2)INTPTR2 p3,p4;进行字符串替换后变成int* p1,*p2;其中INTPTR2是具有含义的,说明是一个指向整型数据的指针,p3和p4都为指针变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值