typedef

1 typedef的用法

1.1 typedef的意义

typedef用于定义一种新的类型,这句话是错误的!

typedef的意义:

  • typedef用于给一个已经存在的数据类型重命名。
  • typedef本质上不能产生新的类型。

typedef重命名的类型需要注意:

  • 可以在typedef语句之后定义。
  • 不能被unsigned和signed修饰。

用法: typedef type new_name


2 typedef和#define的区别

2.1 typedef和#define效果等同的情况

首先,我们必须明白#define只是预处理指令,只能进行简单的文本替换;而typedef是给已经存在的类型的进行重命名,用来简化程序的书写以及提高程序的可移植性。另外需要知道,typedef所定义的类型是在编译阶段进行处理的。也就是说,typedef和#define的本质是不一样的。

对于如下代码,typedef和#define可以起到相同的效果:

typedef int int32_t;
#define int32_t int

int32_t a, b;

2.2 typedef和#define效果不等同的情况

如果我们将上面的int类型换成int*类型,那么两者的效果将不再等同,这里需要特别注意:

typedef int* int32_t;

int32_t a, b;
/* 等同于如下代码 */
int *a, *b;
#define int32_t int*

int32_t a, b;
/* 等同于如下代码 */
int* a, b;

3 typedef特殊之处

3.1 typedef特殊之处

如下代码中的p代表什么含义?

typedef int* pInt;
const pInt p;
p = NULL;	// error

我们需要知道pInt对于编译器来说是一个整体,那么就是指p这个变量不能出现在赋值符号的左边。


参考资料:

  1. C语言进阶剖析教程
  2. C/C++从入门到精通-高级程序员之路【奇牛学院】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值