You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中union属于用户定义数据类型还是派生数据类型?

C语言中union的类型归类界定

在C语言里,关于union(共用体)属于派生数据类型还是用户定义数据类型的分歧,本质是不同资料采用了不同的分类体系,核心判断应该以C语言官方标准(如C11、C17)为依据:

依据C标准的分类逻辑

C标准并未直接使用「用户定义数据类型」这一术语,而是将数据类型划分为三大类:

  • 基本类型:包含字符类型、整数类型、浮点类型、布尔类型及空类型;
  • 派生类型:由其他单一类型派生而来,包括指针类型、数组类型、函数类型;
  • 复合自定义类型:结构体(struct)、共用体(union)、枚举(enum)这类需要程序员自行定义成员结构的类型。这类类型不属于标准定义的「派生类型」,因为它们并非从某一个基础类型直接派生,而是由用户组合多种类型构造而成。

分歧的来源

  • 部分资料将union归为派生类型,是采用了广义的分类方式:把所有非基本类型都纳入派生类型范畴,或是沿用了早期教材、文档的分类习惯;
  • 另一些资料将union归为用户定义类型,是聚焦于「类型结构由用户自主定义」这一核心特性——union必须由程序员声明成员、确定类型组合,因此属于用户自定义的范畴。

总结

严格遵循C标准的话,union不属于标准定义的派生数据类型,而是用户自定义的复合类型;但如果采用广义的非基本类型分类,部分资料会将其划入派生类型。实际学习中,重点应放在理解union的内存重叠、共用存储空间等核心特性,而非纠结分类名称的差异。

内容的提问来源于stack exchange,提问作者Anine Hartog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:55:28