假设我们正确取消引用并正确使用整数,这是一个好的编程习惯吗?
union {
int x;
struct node * next;
};
联合是相当低级的语言功能。关于哪些类型可以一起存在于一个联合中,没有任何有意义的理由存在任何限制性的“良好编程实践”。联合的目的是“多路复用”内存使用:通过在同一内存区域中存储几个生命周期不重叠的不相关对象来节省空间。
如果这就是你所需要的 - 去吧。
联合有时用于原始内存重新解释(AKA 类型双关语)。工会的这种使用曾经是非法的,直到它在 C99 标准的最新技术勘误之一中正式合法化。虽然它有其用途,但类型双关确实可以被视为有问题的编程实践。
有效的?是的。
好主意?可能不是。指针甚至不是sizeof(int)
64 位的,因此这将导致不太有用的结果。