c语言中int和define的区别,【C语言学习笔记】#define与typedef

一、typedef

typedef的作用是为数据类型重命名,当然只能是数据类型,不能是变量。

注意:使用typedef后,要加分号"  ;  "。

二、举例

typedef  struct student

{

//code

} Stu_st,  *Stu_pst;

我们给Stu_st 取了个别名叫:

struct  student

{

//code

}

我们给Stu_pst 取了个别名叫:

struct  student

{

//code

} *

所以,struct  student stu1; 和 Stu_st stu1;没有区别。

struct student * stu2; 和 Stu_pst stu2; 没有区别。

三、typedef与#define的区别

(1)#define  INT32 int

unsigned   INT32   i = 10;

(2)typedef   int   int32;

unsigned   INT32   j = 10;

其中,(1)编译正常,这个容易理解;(2)编译出错,我也不知道这是为什么,估计编译器将这句话理解为:unsigned ( int )   int  j =10; 即INT32代表的 int  和unsigned ( int ) 是两次声明,所以出错。

思考下面的一个例子:

#define  dPS   struct  *s

typedef    struct s*  tPS;

以上两种情况的意图都是要定义dPS和tPS作为一个指向结构体s的指针。哪种方法更好呢?

答案是:typedef更好。

比如:

dPS   p1,  p2;

tPS    p1,  p2;

将第一个扩展为: struct s  *  p1,  p2;

那么,p1为指向结构体s的指针,p2为结构体s类型的变量。

将第二个我们可以这样理解:p1, p2均为tPS类型,即p1,p2均为指向结构体s的指针。

声明:以上内容为我做学习《C语言深读解析》电子版和网络文章《16道嵌入式C语言面试题》时做的学习笔记。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值