前端之家收集整理的这篇文章主要介绍了
C中的工会背后有什么意义?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在阅读O’Reilly的实用C编程书,并阅读了关于C编程语言的K& R书籍,而我在理解联盟背后的概念时遇到了麻烦.
它们采用最大数据类型的大小来构建它们……最近分配的数据类型会覆盖其余数据……但为什么不根据需要使用/释放内存?
书中提到它用于通信,你需要设置相同大小的标志;并且在google网站上,它可以消除奇数大小的内存块……但它是否适用于现代的非嵌入式内存空间?
你可以用它和cpu寄存器做些狡猾的东西吗?它只是一个早期编程时代的延续吗?或者它,像臭名昭着的goto,仍然有一些强大的用途(可能在紧张的内存空间),这使得它值得保持?
好吧,你几乎回答了你的问题:记忆.
在这些日子里,内存相当低,即使节省几千字节也很有用.
但即便在今天,工会也会有用.例如,如果您想要实现某种变体数据类型.最好的方法是使用联合.
这听起来不是很多,但我们假设你想要使用一个存储4个字符的字符串(如ID)或4个字节的数字(可能是某个哈希值或实际上只是一个数字)的变量.
如果你使用经典结构,这将是8个字节长(至少,如果你不幸,也有填充字节).使用联合它只有4个字节.所以你节省了50%的内存,这对于一个实例来说并不是很多,但想象一下这些实例中有一百万个.
虽然你可以通过强制转换或子类化来实现类似的东西,但仍然是最简单的方法.
原文链接:https://www.f2er.com/c/118239.html