《C和指针》笔记9: typedef

C语言支持一种叫作typedef的机制,它允许你为各种数据类型定义新名字。typedef声明的写法和普通的声明基本相同,只是把typedef这个关键字出现在声明的前面。例如,下面这个声明:

c 复制代码
char *ptr_to_char;

把变量ptr_to_char声明为一个指向字符的指针。但是,在添加关键字typedef后,声明变为:

c 复制代码
typedef char *ptr_to_char;

这个声明把标识符ptr_to_char作为指向字符的指针类型的新名字。可以像使用任何预定义名字一样在下面的声明中使用这个新名字。例如:

c 复制代码
ptr_to_char a;

使用typedef声明类型可以减少使声明变得又臭又长的危险,尤其是那些复杂的声明。而且,如果以后觉得应该修改程序所使用的一些数据的类型时,修改一个typedef声明比修改程序中与这种类型有关的所有变量(和函数)的所有声明要容易得多。

另外要注意应该使用typedef而不是#define来创建新的类型名,因为后者无法正确地处理指针类型。例如:

c 复制代码
#define d_ptr_to_char char *
d_ptr_to_char a, b;

正确地声明了a,但是b却被声明为一个字符(参考《C和指针》笔记1: 指针声明)。在定义更为复杂的类型名字时,如函数指针或指向数组的指针,使用typedef更为合适。

参考

  1. 《C和指针》
相关推荐
网易独家音乐人Mike Zhou3 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
冰帝海岸4 小时前
01-spring security认证笔记
java·笔记·spring
小二·5 小时前
java基础面试题笔记(基础篇)
java·笔记·python
搬砖的小码农_Sky6 小时前
C语言:数组
c语言·数据结构
wusong9998 小时前
mongoDB回顾笔记(一)
数据库·笔记·mongodb
猫爪笔记8 小时前
前端:HTML (学习笔记)【1】
前端·笔记·学习·html
Resurgence038 小时前
【计组笔记】习题
笔记
pq113_68 小时前
ftdi_sio应用学习笔记 3 - GPIO
笔记·学习·ftdi_sio
爱米的前端小笔记9 小时前
前端八股自学笔记分享—页面布局(二)
前端·笔记·学习·面试·求职招聘
ahadee10 小时前
蓝桥杯每日真题 - 第19天
c语言·vscode·算法·蓝桥杯