【跟着小甲鱼学C语言】P49 typedef关键字

typedef关键字

1.typedef的作用

  1. typedef 最基础的作用在于起别名。例如typedef int interger;就是给int起了一个别名。在一些应用场景中,起别名可以让程序看起来更加直观。
    typedef也可以一次性起多个别名typedef int integer,*pinteger;这句话为int起了两个别名,但是注意其中pinteger是一个指针,一定要注意为指针起别名时要在相应的别名上加上号,而不是在最先面加上*号,因为在最前面加号只会让第一个别名变成指针别名。
  2. typedef可以简化一些比较复杂的声明:
    1.用typedef来简化行指针的声明typedef int (*pointer_to_array)[3];。之后就可以使用pointer_to_array来定义一个指向三个整型变量的行指针了,比如pointer_to_array ptr;
    2.用typedef来简化函数指针定义,比如typedef int (*pointer_to_function)(int, int);

2.typedef和define

我们知道define也可以用来起别名,但是define和typedef的区别在于,define永远都是机械的替代,而typedef是重新封装一个名字。一个经典的例子:

#define p_int int* 
typedef  int* p_int;

p_int a,b

上面两种替换方式会不一样。当使用define来替换时,式子编程int *a,b,这里只有a是int型指针,而b只是一个普通的int型变量。但如果使用typedef来替换,那么a,b都会是int型指针。而且要注意define和typedef起名字时的顺序不一样,而且因为typedef是一个语句,末尾要加上分号。

3.typedef和结构体

因为在使用结构体的时候经常会用到类似于struct Book这样的表达,这种代码一多看起来会很混乱,所以我们通常可以为结构体起一个别名,而且国际通用惯例是,给结构体起别名时直接起两个,加上一个指针别名。例子:

typedef struct Book
{
	char name[120];
	float price;
}BOOK, *PBOOK;

这样一来定义Book类结构体就可以直接使用BOOK关键字了,这种定义法使得BOOK也更像和intchar等标准类型的数据结构了。另外定义Book类指针就可以直接使用PBOOK关键字了,很方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值