C语言中typedef的四种用法(附带详细解析!!)

1)typedef基本数据类型取“别名”

typedef unsigned int size;
typedef unsigned int16 u16;
typedef unsigned int8 u8;

2)typedef为自定义数据类型取“别名”

typedef struct{
	menu_f btn1; // make array
	menu_f btn2;
	menu_f btn3;
	draw_f draw;
	itemLoader_f loader;
}menuFuncs_t;
typedef enum
{
	DISPLAY_DONE,
	DISPLAY_BUSY,
//	DISPLAY_TOOFAST
} display_t;
其中,枚举类型名 表示定义的枚举类型的名称,枚举常量1、枚举常量2 等表示枚举类型中的常量。
每个枚举常量都有一个整数值,它们的默认值从 0 开始,依次递增 1

typedef为数组取“别名”

typedef char arr_name[20];

这是一个 C 语言中的类型定义语句,用于定义一个名为 arr_name 的数组类型,数组元素类型为 char,数组长度为 20。

具体来说,typedef char arr_name[20]; 定义了一个名为 arr_name 的数组类型,它包含了 20 个 char 类型的元素。通过这个类型定义,你可以使用 arr_name 来声明一个长度为 20 的字符数组,而不必每次都写出完整的数组声明语句。

例如,使用这个类型定义可以这样声明一个长度为 20 的字符数组:

arr_name my_array;

这样就等同于以下完整的数组声明:

char my_array[20];

这种类型定义可以使代码更加简洁和易读,特别是在多处需要声明相同类型的数组时。

4)typedef为指针取“别名”

typedef void (*display_f)(void);

这是一个 C 语言中的类型定义语句,用于定义一个函数指针类型 display_f。具体来说,display_f 是一个指向无返回值、无参数的函数的指针类型。

在这个类型定义中,typedef 关键字用于定义一个新的类型名 display_f,它是一个函数指针类型。函数指针类型是指可以指向函数的指针类型,它可以用于将函数作为参数传递给其他函数,或者将函数作为返回值返回。

这个类型定义语句的语法如下:

typedef 返回类型 (*指针变量名)(参数列表);

其中,返回类型 表示函数的返回值类型,参数列表 表示函数的参数列表,指针变量名 表示定义的函数指针类型的名称。

因此,typedef void (*display_f)(void); 定义了一个名为 display_f 的函数指针类型,它可以指向一个无返回值、无参数的函数。在实际使用中,可以使用 display_f 类型来声明函数指针变量,并将其指向一个符合要求的函数。例如:

void my_display() {
    printf("Hello, world!\n");
}

int main() {
    display_f display_ptr = my_display; // 将函数指针指向 my_display 函数
    display_ptr(); // 调用函数指针,输出 "Hello, world!"
    return 0;
}

在这个示例中,display_ptr 是一个 display_f 类型的函数指针变量,它被赋值为 my_display 函数的地址。然后,通过调用 display_ptr() 来调用 my_display 函数,输出 “Hello, world!”。

相关推荐

  1. C语言typedef用法(附带详细解析!!)

    2024-06-08 00:54:01       8 阅读
  2. C++】STLList详细实现

    2024-06-08 00:54:01       21 阅读
  3. C语言#define用法详解

    2024-06-08 00:54:01       39 阅读
  4. C# 扩展运算符(...)详细

    2024-06-08 00:54:01       14 阅读
  5. C语言typedef

    2024-06-08 00:54:01       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 00:54:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 00:54:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 00:54:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 00:54:01       18 阅读

热门阅读

  1. Ubuntu上安装Chrome浏览器

    2024-06-08 00:54:01       6 阅读
  2. Ubuntu22.04配置脚本开机自启动

    2024-06-08 00:54:01       5 阅读
  3. Windows安装CuPy报error C3615错误

    2024-06-08 00:54:01       10 阅读
  4. 前端开发之WebSocket通信

    2024-06-08 00:54:01       9 阅读
  5. 人工智能处理大数据很方便吗

    2024-06-08 00:54:01       7 阅读
  6. 数据结构(Trie树(字典树))

    2024-06-08 00:54:01       5 阅读
  7. Mybatis使用缓存的配置总结

    2024-06-08 00:54:01       8 阅读
  8. 正则表达式详解

    2024-06-08 00:54:01       8 阅读
  9. 【bug】在 Windows 上安装 SDKMAN! 的完整指南

    2024-06-08 00:54:01       10 阅读
  10. oracle dataguard 从库 MRP 进程的状态是 WAIT_FOR_GAP

    2024-06-08 00:54:01       8 阅读