我正在学习C并在C中尝试粗略实现链表。长话短说我有一个只包含一个void指针(元素)的结构和另一个指向下一个节点的指针。(代码可以遵循)我的问题是,当将头节点和其他节点传递给新函数时,有没有办法确保这两个元素属于同一类型?两个节点应该能够保存任何类型的数据。我已经尝试与sizeof()进行比较,但我无法顺从void指针。提前谢谢!
struct Node{
void* element;
struct Node* next;
}
这是节点的代码,我只需要一种方法将它们与assert进行比较,以确保链接列表具有所有相同的元素类型!谢谢!
答案 0 :(得分:9)
不 - 你通常想要避免这样的设计,但是如果你真的无法避免它,你通常需要在节点中放置一个枚举来告诉你它包含的数据类型。
答案 1 :(得分:1)
void *正是一个无类型指针。换句话说,你的程序知道的只是它指向SOMETHING的指针。这很有用,但具体(有意)并不是您正在寻找的内容。