打卡学习第十六天

C typedef

typedef 关键字可以用来为类型取一个新的名字。
举例:为单字节数字定义一个术语BYTE

typedef  unsigned  char  BYTE;

此后,标识符 BYTE 便可作为类型 unsigned char 的缩写

BYTE  b1,b2;

使用 typedef 来为用户自定义的数据类型取一个新的名字。
在这里插入图片描述

typedef vs #define

不同点:(很细微的小点哦)

  • typedef 仅限于为类型定义符号名称,#define 不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义 1 为 ONE。
  • typedef 是由编译器执行解释的,#define 语句是由预编译器进行处理的。
  • #define运用于为数值定义别名
    在这里插入图片描述
  • #define可以使用其他类型说明符对宏类型名进行扩展,但对 typedef 所定义的类型名却不能这样做。
    如:#define INTERGE int;
 unsigned INTERGE n;

但是如果是typedef则不能加上unsigned。

  • 在连续定义几个变量的时候,typedef 能够保证定义的所有变量均为同一类型,而 #define 则无法保证。
#define PTR_INT int *
PTR_INT p1, p2;  (定义了int *p1,int p2)
typedef int * PTR_INT
PTR_INT p1, p2;(定义了int p1,p2)

typedef的特殊功能

  • typedef char *STRING; //此时编译器认为STRING是一个类型的标识符,该类型指向char
 STRING  name,sign;char  *name,*sign;
  • typedef 给出的符号名称仅限于对类型,而不是对值。

  • typedef 的解释由编译器,而不是预处理器执行。并不是简单的文本替换。

  • 虽然范围有限,但是在其受限范围内 typedef 比 #define 灵活。

  • 为复杂的声明定义一个新的简单的别名。

int *(*a[5])(int, char*);//首先将*a[5]这个指针数组看为整体即int *(p)(int,char*),然后这代表了p即a[5]是函数指针,指向了形参是int和char*。

    typedef int *(*pFun)(int, char*);

    pFun  a[5];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值