返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >怎么使用C语言中的typedef
  • 590
分享到

怎么使用C语言中的typedef

2023-06-25 14:06:43 590人浏览 薄情痞子
摘要

本篇内容介绍了“怎么使用C语言中的typedef”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在单片机和操作系统中 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。输出结果如下:

怎么使用C语言中的typedef

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

怎么使用C语言中的typedef

这里使用 #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都是指向字符的指针。接着给这两个指针赋值,然后打印出来。

怎么使用C语言中的typedef

这时使用 #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;}

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

怎么使用C语言中的typedef

这时为什么呢?因为使用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 重新定义一个数据类型。

怎么使用C语言中的typedef

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

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

--结束END--

本文标题: 怎么使用C语言中的typedef

本文链接: https://lsjlt.com/news/305312.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么使用C语言中的typedef
    本篇内容介绍了“怎么使用C语言中的typedef”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在单片机和操作系统中 typedef 会经常用...
    99+
    2023-06-25
  • C语言typedef怎么使用
    typedef是C语言中的一个关键字,用于给已有的数据类型取一个新的名字。使用typedef关键字可以方便地定义新的数据类型,使代码...
    99+
    2023-08-15
    C语言 typedef
  • C语言中的typedef怎么用
    这篇“C语言中的typedef怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言中的typedef怎么用”文章吧。可...
    99+
    2023-06-16
  • C语言中typedef怎么用
    这篇文章主要介绍了C语言中typedef怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、简洁定义C语言允许为一个数据类型起一个新的别名,就像给人起“绰号”一样。而编程...
    99+
    2023-06-20
  • C语言typedef struct怎么使用
    在C语言中,typedef struct用于定义结构体类型并为其起一个别名。它的基本语法如下:```typedef struct {// 结构体成员data_type1 member1;data_type2 member2;...} a...
    99+
    2023-08-09
    c语言
  • 怎么使用c语言中typedef关键字
    本篇内容主要讲解“怎么使用c语言中typedef关键字”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用c语言中typedef关键字”吧!typedef关键字可以为类型取一个新名字。按照惯例...
    99+
    2023-06-25
  • c语言中typedef的作用
    typedef 在 c 语言中用于创建一种新的数据类型别名,提高代码可读性、可维护性和可移植性。它的语法为:typedef 。例如,typedef int my_int;可创建一个名为...
    99+
    2024-05-09
    c语言 typedef
  • c语言中typedef struct的用法
    typedef struct 在 c 语言中用于创建结构体类型别名,简化结构体使用。它通过指定结构体别名将一个新的数据类型作为现有结构体的别名。优点包括增强可读性、代码重用和类型检查。注...
    99+
    2024-05-09
    c语言 作用域 typedef
  • typedef在c语言中的用法
    typedef在c语言中创建类型别名,用法步骤如下:声明类型别名:使用typedef关键字和现有数据类型定义新名称。使用别名声明变量:用类型别名代替原始数据类型进行变量声明。好处包括提高...
    99+
    2024-04-29
    c语言 代码可读性 typedef
  • c语言中怎么使用typedef定义结构体
    在C语言中,可以使用typedef关键字来定义结构体,使得结构体的类型名称更加简洁易用。以下是使用typedef定义结构体的一般形式...
    99+
    2023-08-15
    c语言 typedef
  • typedef struct在c语言中用法
    typedef 关键字用于创建自定义数据类型的别名,允许简化复杂结构的名称。使用步骤如下:创建自定义数据类型(如结构体);使用 typedef 将其赋予一个新名称(别名);使用别名替代原...
    99+
    2024-05-09
    c语言 代码可读性 typedef 标准库
  • c语言中typedef关键字的作用
    c语言中typedef关键字的作用是定义类型别名。它创建已存在数据类型的新名称,增强代码可读性和可维护性,包括:创建类型别名数据类型重用增强代码可读性提高代码可维护性 C语言中type...
    99+
    2024-05-10
    c语言 代码可读性 typedef
  • c语言typedef的作用有哪些
    C语言中的typedef关键字用于创建类型别名,使得程序员可以为某种类型定义一个新的名称。typedef的作用如下:1. 简化复杂的...
    99+
    2023-09-11
    c语言
  • c语言中typedef和define的区别是什么
    这篇文章主要介绍“c语言中typedef和define的区别是什么”,在日常操作中,相信很多人在c语言中typedef和define的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”c语言中typed...
    99+
    2023-06-25
  • C语言typedef关键字有什么作用
    本篇内容主要讲解“C语言typedef关键字有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言typedef关键字有什么作用”吧!1、来个笑话赵本山在春晚有一个这样的笑话,是这样的有...
    99+
    2023-06-03
  • C语言中typedef的用法以及#define区别详解
    目录1、简洁定义 2、为已有类型起别名 为字符数组起别名为指针起别名3、typedef 和 #define 的区别总结1、简洁定义 C语言允许为一个数据类型起一个新的别名,就像给人...
    99+
    2024-04-02
  • 详解C语言中typedef和#define的用法与区别
    目录一、typedef的用法二、#define的用法三、typedef与#define的区别四、typedef的用途用途一用途二用途三用途四五、typedef的陷阱陷阱一陷阱二一、t...
    99+
    2024-04-02
  • c++中typedef的用法
    typedef 用于在 c++ 中创建别名,使其具有以下优点:提高代码可读性和可维护性简化类型转换强制类型安全 C++ 中 typedef 的用法 定义 typedef typedef...
    99+
    2024-05-01
    c++ 代码可读性 typedef
  • C语言中的makefile怎么使用
    这篇“C语言中的makefile怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言中的makefile怎么使用”文...
    99+
    2023-06-17
  • C语言中的assert怎么使用
    在C语言中,`assert`是一个宏,用于在程序中插入断言语句,用于检查程序中的特定条件是否满足。如果断言条件为真,则程序继续执行;...
    99+
    2023-08-12
    C语言 assert
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作