【C语言】#define和typedef

两者使用的目的都是为了重命名,但是内部构造却完全不同。

两者的区别

#define

        #define ,把右边的部分全部替换为左边的。在预处理的时候展开,只是进行替换的操作,不会进行语法检查,所以使用的时候应该注意写法的错误。

#define   my_data    10

#define   ADD(x,y)    (x+y)

如图, my_data 就是等同于 10  

            ADD(x,y)  就  等同 为  (x+y)

只是起到了替代的作用,没有其他。如上可以看到我(x+y)  是加了括号的,以为替代的时候不会自动加括号,这是初学者最容易放错的点!!

比如我写:   3*ADD(1,2)    替换就是:    3*(1+2)

但是如果没括号:

#define  ADD(x,y)    x+y


3*ADD(1+2)    //替换变成->     3*1+2    =  5

再次强调! 因为是直接替换,不就是原原本本替换,不会给你主动加括号之类的!!!!

typedef

       typedef是进行语法检查之后再放入语句中, 但是其作用只是局限于对已经存在的数据类型起别名。

tyedef int   my_int ; 

typedef char* my_point;

如上, int  和 my_int 是一模一样的,之所以这样做是为了方便代码的读取。让看代码的人更直观方便,也方便代码的编写。  char*     也跟  my_point  是等同的。

总结

typedef    用于对不同的数据类型起别名

#define   主要用于对一些代码的简洁找替代写法 以及让代码更直观

注意点:   

typedef  定义后要加分号 ;     define  不能加!!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值