#define和typedef

1 #define和typedef的区别

#define和typedef都可以用来给现有类型起别名,但#define只是简单的宏替换,在预编译时被处理;而typedef不是的,在编译时被处理。
区别一
#define dchar char *
typedef char * tchar;
dchar p1,p2; //等价于char *p1,p2;只是p1才是指针变量char * 类型,p2是char类型
tchar p3,p4; //等价于char *p3,*p4;p3,p4都是指针变量
#define没有分号,而typedef 作为语句,必须有分号。
区别二
#define 可以实现类型组合
#define dint int ;
typedef int tint ;
unsigned dint p1,p2; //等价于unsigned int p1,p2
unsigned dint p1,p2; //不正确
区别三
typedef可以组建新类型
typedef char[200] charbuf;
charbuf buf; //等价于char buf[200]

2 typedef关键字的用法

typedef是C语言中的一个关键字,用于定义新的类型(或者叫类型的重命名),而不是变量。C语言中的类型一共有两种:一种是编译器定义的原生类型(基础数据类型,如int、double等);另一种是用户自定义类型(如数组类型、结构体类型、函数类型)。

3 typedef的应用

举例
typedef int size;//typedef行
int i;//原型行
size i;//应用行

typedef char line[81];//typedef行
char t[81];//原型行
Line t;//应用行

typedef int (*fun_ptr)(int,int);//typedef行
int (*fp)(int,int);//原型行
fun_ptr fp;//应用行
fun_ptr是类的别名,fp是该类的变量
注意
typedef是给类型取别名的,typedef在语法上是一个存储类的关键字(如auto、extern、static、register),而变量只能被一种存储类的关键字修饰。

4 typedef与struct

先定义结构体类型,再用结构体类型定义变量。
typedef struct node{ } Node;//给struct node{ }类型取别名
Node n;//利用结构体类型申请变量

5 typedef的重要意义

(1)简化类型
(2)创造平台无关类型,便于移植

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值