千家信息网

怎么使用C语言中的typedef

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"怎么使用C语言中的typedef"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在单片
千家信息网最后更新 2026年11月02日怎么使用C语言中的typedef

本篇内容介绍了"怎么使用C语言中的typedef"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在单片机和操作系统中 typedef 会经常用到,它可以为某一个类型自定义名称。和#define比较类似。但是又有不同的地方。

  • typedef 创建的符号只能用于数据类型,不能用于值。而#define 创建的符号可以用于值。

  • typedef 是由编译器来解释,而不是预处理器。

  • typedef 使用起来更加灵活。

下面使用typedef定义一个数据类型

int main(){        typedef unsigned char BYTE;              BYTE c = 10;             printf("%d \r\n",c);                system("pause");        return 0;}

使用typedef将unsigned char类型重新定义为BYTE类型,然后在使用新的类型BYTE定义一个变量c。输出结果如下:

此时如果使用 #define 来替换,好像也可以。

这里使用 #define 将unsigned char替换为 BYTE好像也正确。

下面在看一个例子。

int main(){        typedef char * STR;                      STR s1,s2;         s1="abc";        s2="123";                     printf("%s %s \r\n",s1,s2);         system("pause");        return 0;}

将字符指针 char * 重新定义为STR类型,然后使用STR定义两个指针s1和s2,这样s1和s2都是指向字符的指针。接着给这两个指针赋值,然后打印出来。

这时使用 #define 来替换 typedef 的功能。

#define STR  char *int main(){        STR s1,s2;         s1="abc";        s2="123";             printf("%s %s \r\n",s1,s2);         system("pause");        return 0;}

这时候编译程序的时候,程序会报错。

这时为什么呢?因为使用typedef的时候,是定义了一个新的数据类型。

typedef char * STR;          STR s1,s2; 

相当于

char *s1, *s2;s1="abc";s2="123";     

s1和s2都是指向字符类型的指针。

如果使用 #define 的时候,系统只是简单的替换。

#define STR  char *STR s1,s2; 

将STR用 char * 进行替换

  char *s1,s2;               s1="abc";        s2="123";     

替换后只有s1是指针,s2依然是一个char类型的变量。所以给s2赋值一个字符串的时候系统就会报错。因此要重新定义一个数据类型的时候,要使用typedef,这个在定义结构体的时候使用的非常多。

typedef struct Date{        int year;        int month;        int day;} DT;

使用typedef 将结构体 struct Date 重新定义为DT类型,这样在使用DT定义变量的时候,就相当于使用了 struct Date 来定义变量。

typedef struct Date{        int year;        int month;        int day;} DT;DT d1 = {2021,10,1};DT d2 = {2021,10,10};

等价于

struct Date{        int year;        int month;        int day;};struct Date d1 = {2021,10,1};struct Date d2 = {2021,10,10};

这样通过使用 typedef 来重新定义一个新的类型,使代码写起来更加的简洁。这种方法在单片机的库函数中使用的最多。

typedef struct{    uint16_t GPIO_Pin;              GPIOSpeed_TypeDef GPIO_Speed;     GPIOMode_TypeDef GPIO_Mode;    }GPIO_InitTypeDef;void LED_Init(void){    GPIO_InitTypeDef  GPIO_InitStructure;   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;                                               //LED0-->PA8 端口配置   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                   //推挽输出   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;               //IO口速度为50MHz   GPIO_Init(GPIOA, &GPIO_InitStructure);                                                            /PD2 输出高 }

通过 typedef 将结构体重定义为GPIO_InitTypeDef 类型,这样在初始化的时候,直接使用GPIO_InitTypeDef 类型就可以定义一个关于GPIO的结构体。

在定义数据类型的时候,也会用到 typedef 重新定义一个数据类型。

通过tepedef 定义新的数据类型,增加了代码的可读性和移植性。这里说的新的数据类型不是创建了一个系统不存在的数据类型,而是给已经存在的某个类型增加了一个方便使用的标签。而这个标签又不同于 #define 只是简单的符号替换。

"怎么使用C语言中的typedef"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

类型 数据 时候 指针 变量 字符 系统 结构 输出 符号 语言 两个 代码 内容 单片机 只是 指向 更多 标签 知识 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网与科技 互联网黑科技 互联网科技图片 北京互联网科技有限公司 狮子座互联网科技有限公司 奇酷互联网络科技公司 互联网高科技企业 互联网科技股午盘股票涨跌 剑昆互联网络科技有限公司临桂 贵州叶脉互联网科技有限公司所属行业 玉溪互联网科技怎么选 辽宁互联网新科技 米聚互联网科技南京有限公司排面 翼展科技 首家互联网医院 厦门江牛科技互联网 云南互联网科技学费 悟空问答互联网科技 第三届互联网大会安防黑科技 安徽九吞吴互联网科技有限公司 互联网的黑科技实验室 广州百单互联网科技有限公司 金融科技创新监管互联网金融 睿民互联网科技 深圳艾佳互联网科技 互联网科技创新企业排名 本届互联网博览会上的黑科技 广州千川互联网科技有限公司 富国互联网科技002692 广州燕处互联网科技有限公司 每日互联网科技新闻
0