当我编译下面的代码时,它运行时没有任何错误。
#include<stdio.h>
struct adjacency
{
struct node* dest;
struct adjacency* link;
};
struct node
{
char nodename;
struct node* next;
struct adjacency* adj;
};
int main( void )
{
//code
}
但是为什么?我认为它应该显示编译错误,因为在结构邻接内部使用它之前没有定义结构节点。但是它运行得很好。可能的原因是什么?
最佳答案
代码没有任何问题。 adjacency
内的 struct node
表示有一个名为 node
的结构,而 struct node*
表示 adjacency
保存指向结构节点
的指针。您不需要完整的类型(这是尚未看到其定义的类型的正式术语)来声明指针。如果adjacency
有一个成员struct node link;
你会得到一个错误。
关于c++ - 为什么没有编译错误呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19893454/