C++进阶-typedef

用 typedef 给数据类型取个外号

typedef 数据类型 数据类型的别名
// 为无符号字符类型 unsigned char 定义一个别名 uchar
typedef unsigned char uchar;

有了这个简单的别名,就可以用它来指代无符号字符类型,用作数据类型定义变量:

// 定义一个 uchar 类型的变量,实际上就是 unsigned char 类型的变量
uchar a;

typedef 是为复杂数据类型定义一个别名,而不只是像宏一样简单的替换。这一点在同时定义指针类型的多个变量时特别有用。例如,想定义两个 int*指针类型的变量,自然地,使用宏我们可能会这样写:

// 定义指针类型的宏
#define PINT int*
// 使用宏定义两个变量
PINT pInt1,pInt2;

经过宏替换后,上面定义指针变量的代码变为:

// 宏替换后的实际代码
int* pInt1, pInt2;

这不是在定义两个指针变量,而是在定义一个 int指针类型变量pInt1和另一个int类型变量pInt2。想使用宏在同一行内方便地定义多个指针变量是行不通的,解决问题的办法就是用 typedef 为指针类型定义一个别名,然后使用这个别名作为数据类型,就可以在一行内定义多个指针类型的变量了:

// 为指针类型 int*定义一个别名 PINT
typedef int* PINT;
// 同时定义多个指针类型变量
PINT pInt1, pInt2;

typedef 的另外一个重要用途是为复杂的类型定义简单的别名。请看下面这行代码:

int* (*pFunc)(int, char*);

实际上,这行代码所定义的是一个函数指针 pFunc,它所能够指向的函数的返回值类型是 int*,两个参数分别是 int 类型和 char*类型。如果只是定义一个这种类型的函数指针,那还可以勉强接受;如果要定义多个,那么多次书写这么复杂的既难写又难懂的语句,恐怕只有“撞墙”了。使用typedef就很简单了:

// 定义函数指针类型为 PFUNC
typedef int* (*PFUNC)(int, char*);
// 使用 PFUNC 定义多个函数指针变量
PFUNC pFunc1, pFunc2;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值