《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和指针》
相关推荐
YJlio1 分钟前
Streams 学习笔记(12.2):看见 NTFS 隐藏的备用数据流(ADS)
服务器·笔记·学习
im_AMBER4 分钟前
Leetcode 81 【滑动窗口(定长)】
数据结构·笔记·学习·算法·leetcode
崇山峻岭之间12 分钟前
Matlab学习笔记03
笔记·学习·matlab
小尧嵌入式22 分钟前
Linux进程线程与进程间通信
linux·运维·服务器·c语言·开发语言·数据结构·microsoft
Wilber的技术分享42 分钟前
【大模型实战笔记 8】深入理解 LangGraph:构建可持久化、多智能体的 LLM 工作流
人工智能·笔记·agent·langgraph·智能体开发
IT方大同42 分钟前
C语言选择控制结构
c语言·开发语言
波比:)1 小时前
(概率)波利亚的罐子
笔记·数学
yuhaiqun19891 小时前
学AI Agent:从React模式到Plan框架,3条路径一次学透
人工智能·经验分享·笔记·react.js·机器学习·ai·aigc
智者知已应修善业1 小时前
【字符串提取3个整数求和】2024-2-11
c语言·c++·经验分享·笔记·算法
晚秋大魔王1 小时前
C语言-宏的基础、进阶、高级、内置宏的用法
c语言·开发语言·