只有一个不是指针的相同结构的嵌入式对象不是相同的吗?
Struct Node
{
int data;
Node next;
};
//vs
Struct Node
{
int data;
Node * next;
};
不!
具有以下结构:
struct Node {
Node other;
};
是非法的! Node
没有定义的大小;编译器无法正确生成它。Node
将包含一个包含Node
的Node
。等什么?
然而,指针很好,它只指向内存的一部分。定义指针时,它指向的类型不必是完整的,它只需要定义。
struct Node;
int main() {
Node* a; // Fine, no errors.
Node b; // Incomplete type error
}