C语言typedef关键字的用法以及和#define的区别

typedef关键字意为为一组复杂类型声明重新定义为一种简单类型的声明

它的具体用法包括一下几种:
1:基本变量类型的定义
例如 typedef unsigned char uchar
那么定义一个无符号类型的变量时就可以这样定义
uchar a;//unsigned char与uchar相等

2:基本数组类型定义
例如:typedef int arr[5];
那么这个式子又该怎么理解呢?
前面已经说到:typedef关键字意为为一组复杂类型声明重新定义为一种简单类型的声明,所以那我们如果想用一种简单的方法表示一个包含5个元素的整型数组又该怎么样表示呢?以便和int a[5]这种常规的定义方式区别开来。这里就用到了typedef
所以上面的arr就可以理解为 int [5],那arr a就相当于int a[5]。

3:基本指针类型定义
例如:typedef int* a;
那就可以通过a来定义一个整型类型的指针
比如 a b,c;//这里b和c都为int* 类型的变量

4:函数声明
例如:typedef int fun(void)
同样如果我们想为一个int 类型且形参为void类型的函数定义一个简单的声明方式,便于区分传统定义方式int fun(void),那这里typedef就派上用场了,我们可以通过typedef int fun(void)这种方式定义一个int 类型且形参为void类型的函数。所以 这里的fun就代表一个int 类型且形参为void类型的函数,,则fun f 就代表int f(void),同样如果我们想通过这种方式为int*类型的函数重新定义一种较为简单的定义方式也可以通过上述的方法。

5:结构体
例如typedef struct node
{
int a;
}b,*c;

那我们定义结构体变量的时候就可以不带struct了,

例如:b b1//b等于struct node
c c1//c等于struct node*

二 和#define的区别

通过我上面的详细解说,相信大家对typedef这个关键字都有了一个较为全面的认识。它和#define的区别主要包括一下几点

1:#define 只是一个简单的替换
例如:typedef int* a;
那么 a b,c;//b和c都为int* 类型的变量
#define a int*
a b,c;//相当与int* b,c; 这里只有b被定义为了int*,而c为int型

2:typedef是编译阶段的一部分
#define是一个宏,在预处理阶段完成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值