c语言枚举型和联合型被淘汰了吗

我请分析下,c语言枚举型和联合型被淘汰了吗
最新回答
因为太帅被罚块

2024-11-29 08:39:42

如果不经常写代码,或者说遇到的编程场合不够多,那么就会感觉,编程语言提供的很多功能没有什么用,但是真相是,语言特性的存在,要用在特定场合,只要当前环境或者场合存在,语言特性就不会被淘汰。

以枚举类型为例,枚举类型应该用在什么场合?用在变量的取值被限定在一个有限的范围内的场合,参考:

linux/net.h 文件中,定义了socket类型如下:

/linux/usb.h 文件中关于 USB接口相关的定义:



至于联合的使用,也有不少,如 /linux/vmw_vmci_defs.h文件中:

由此可见,这些特性的应用还是很广泛的,不存在过时或者淘汰的问题。

天空暗下来我就是光

2024-11-29 13:33:40

没有淘汰的说法。
用法不同罢了。
枚举(enum):通常用于表示一组经过排序的有限的但一实体项列表。简单说就是一组有关联的常量。比如星期。
联合体(union):和结构类似,区别是成员共用地址。简单说使用得当,可以节省内存。
结构体(struct):这个不用多说,多种类型数据的集合,面向对象之前没有类,这就是最接近类的。当然两种也有区别。比如:
结构是值类型,在堆栈创建,速度快,容易复制,但其内部不能对自身成员数据操作,不能封装函数(用函数指针可以模拟)。
类是引用型,可以封装函数,可以对自身数据操作。集合效率比结构高。
简单说,小数据集合可以用结构。大集合用类。
一枕庭前雪

2024-11-29 10:44:10

其实二者都没有被淘汰。枚举类型可以一次声明多个常量。如:enum MaxInputFlags{MAXWORD = 200,MAXLINE = 1000};而联合常用于那些内存较小的机器上,用于共享内存比如:union {int a;char ch;};a与ch共享同一块内存,除此之外还能用于满足内存分配程序的对齐要求:

typedef double Align; //对齐..
//代码改编自《C程序设计语言》
union memory_block_header 
{
    struct
    {
       union memory_block_header *next;
       unsigned int size;
    };
    Align x; //强制的内存块的对齐
};
落寞,渐行渐远。

2024-11-29 16:31:28

联合在实际应用中比较少,不过仍存在,在嵌入式寄存器操作中尤其多
枚举永远不可能被淘汰
其自增效果,在值不是敏感情况下,是宏定义或常量无法取代的
狙击甜心

2024-11-29 09:35:58

枚举型用得不多了,联合型还是很有用,可以让不同类型变量共享内存,例如一个整型变量对应含两个字符的数组,可以确认整数存储的字节序。