恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

关键字 typedef 用法详细解析

  • 首页
  • 资讯中心
  • /
  • 关键字 typedef 用法详细解析

相关资讯

#define和#、##、@#解析: 2026/9/28 6:05:48
NewsBlur 自托管部署与 MCP 智能体接入完整指南:从 Docker Compose 到 AI 阅读助手 2026/9/28 6:05:48
Markdown开发VSCode插件推荐:用TaoToken统一Key打通AI写作与预览链路 2026/9/28 6:05:48

最新资讯

NVIDIA模型优化实战:量化、剪枝与蒸馏的硬件对齐方法论
Jev模型实战测评:类型安全的结构化输出与API调用指南
AI全栈安全渗透测试平台架构设计:十六大领域与四智能体协作机制
Kubernetes多集群编排原理与实践入门
中小企业AI改造实战:智能体工程师认证与工作流落地指南
双指针原地算法:力扣26/80题有序数组去重模板全解析

今日推荐

婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量
制作网页比较方便的软件怎么选?一文搞懂避坑指南
BootCamp6.1.7071驱动包手动安装与回滚全攻略

本周热门

从像素到笔画:srt-whiteboard-animation骨架笔迹追踪实现(Zhang-Suen细化+8邻接追踪)
网站建设的英语怎么说?别只背单词,看完这套安全完整流程才敢上线
新手入门看这篇:建设网站加盟避坑指南与SEO实操

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

关键字 typedef 用法详细解析

发布时间:2026/9/28 6:05:48
关键字 typedef 用法详细解析 一 . typedef1.什么是typedeftypedef 是C语言中的一个关键字它的作用是给一个已经存在的类型起一个别名。typedef 可以为基本数据类型、自定义数据类型结构体、共用体、枚举类型、数组和指针定义简洁的类型名称。一旦用户在程序中定义了自己的数据类型名称就可以在该程序中用自己的数据类型名称来定义变量的类型、数组的类型、指针变量的类型与函数的类型等。typedef 在编译时处理有类型检查功能不同于 #define 的简单文本替换。typedef 可以增强程序的可读性和可移植性。2.typedef 用法1.基本数据类型的重定义示例#includestdio.h typedef int i; typedef char ch; typedef long long int li; int main() { i a 5; li b 10; ch c a; printf(%d\n, a); printf(%lld\n, b); printf(%c\n, c); return 0; }运行结果如下图所示在这里我们将 int、char、long long int 分别重定义为i、ch、li并通过新的类型名声明变量 a,b,c 由此我们可以知道当使用 typedef 定义类型名后我们可以使用新的类型名声明与原类型名声明的变量相同的变量。注使用 typedef 定义类型名后原类型名作用不变。2.自定义数据类型重定义a.结构体示例#includestdio.h struct student { char name[20]; int age; char sex[7]; }; typedef struct student stu; int main() { stu a { wang, 10,male }; printf(%d, a.age); return 0; }运行结果如下图所示在这里我们对结构体 struct student 重定义为stu 并通过 stu 声明变量 a 并进行初始化。我们也可以在结构体定义时进行重定义如下#includestdio.h typedef struct student { char name[20]; int age; char sex[7]; }stu; int main() { stu a { wang, 10,male }; printf(%d, a.age); return 0; }此时结构体变量 第一个名称可以省略如下#includestdio.h typedef struct { char name[20]; int age; char sex[7]; }stu; int main() { stu a { wang, 10,male }; printf(%d, a.age); return 0; }b.共用体共用体的重定义与结构体相似示例#includestdio.h union un { char a; int b; }; typedef union un u; int main() { u b {0}; b.a a; printf(%d, b.b); return 0; }运行结果如下图在这里我们对共用体 union un 重定义为 u 并通过 u 声明变量共用体变量 b 并进行初始化。我们也可以像结构体一样在定义共用体时进行重定义如下#includestdio.h typedef union un { char a; int b; }u; int main() { u b { 0 }; b.a a; printf(%d, b.b); return 0; }c.枚举变量示例#includestdio.h enum week { one 1, two, three, four, five, six, seven }; typedef enum week w; int main() { w a one; printf(%d, a); return 0; }在这里我们定义枚举类型 week 后对 week 进行重定义为 w 并通过 w 声明枚举变量 a 并进行初始化。运行结果如下图同时也可以像共用体和结构体一样在定义枚举类型时进行重定义如下#includestdio.h typedef enum week { one 1, two, three, four, five, six, seven }w; int main() { w a one; printf(%d, a); return 0; }3.数组的重定义示例#includestdio.h typedef int (i)[5]; int main() { i a { 1,2,3,4,5 }; printf(%d, *(a2)); return 0; }结果如下图所示在这里我们将包含五个整型的数组重定义为i 并通过 i 声明枚举变量 a 并进行初始化。4.函数的重定义示例#includestdio.h int fun(void) { return 20; } typedef int(f)(void) ; int main() { f* a fun; printf(%d, (a())); return 0; }结果如下图所示这里我们定义一个返回整型并且无参数的函数类型为 f 通过 f 声明一个函数变量并赋值为fun。5.指针的重定义a.指针示例#includestdio.h typedef int* i; int main() { int a 0; i b a; printf(%d, *b); return 0; }运行结果如下图这里我们将 int* 类型重定义为 i并通过 i 声明整型指针变量 b 并将整型变量 a 的地址赋给 b。b.数组指针重定义示例#includestdio.h typedef int(*i)[5]; int main() { int a[5] { 1,2,5,6,9 }; i b a; printf(%d, *((*b)3)); return 0; }运行结果如下图这里我们将指向包含五个整型的数组的指针重定义为 i 通过 i 声明 数组指针变量 b并赋值为数组a的地址。c.指针数组的重定义指针数组顾名思义就是包含多个指针的数组。#includestdio.h typedef int* i[5]; int main() { int a 10, b 20, c 30; i arr { a,b,c }; printf(%d\n, **arr); printf(%d\n, **(arr1)); printf(%d\n, **(arr2)); return 0; }运行结果如下图所示这里我们对指针数组重定义为 i 通过 i 声明变量 arr 并初始化为 a, b, c。d.函数指针示例#includestdio.h int fun(void) { return 20; } typedef int( *f)(void) ; int main() { f a fun; printf(%d, (a())); return 0; }返回值如下图这里将返回值为 int 整型并且没有参数的函数类型重定义为 *f即 f 为指向函数的指针类型并将函数 fun 赋给函数变量 a 。3.注意事项1.小心typedef的陷阱我们先看一个简单的代码#includestdio.h typedef int* i; int main() { int a 10; const i b a; return 0; }对于这个代码我们会下意识的认为 const 的用法 “左定值有定向”所以这个代码相当于 “const int * b”实则不然typedef 不同于宏不是简单的字符替换这个代码相当于 int * const b; 。2).对于多个储存类关键字在语法上typedef 不没有储存类功能但在语法上属于储存类关键字因此下图这种情况是错误的typedef static int a;在这里typedef 占据了储存类关键字的位置不再允许其他储存类关键字的出现。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号