我是C的新手,正在使用visual studio。 在编写此函数时,我收到此错误(不允许指向不完整类类型的指针)。我不知道为什么。
int Length(struct node* head)
{
struct node* current = head;
int count = 0;
while (current != NULL)
{
count++;
current = current->next; <-- error here when pointing current to next
}
return count;
}
答案 0 :(得分:2)
- &gt;运算符取消引用其左侧的表达式。因此,此时必须知道该对象的具体布局。 struct node* current=head
行声明了一个指向结构的指针,当编译器看不到此结构的定义时,该结构可以是不透明的。要使此代码起作用,您需要将struct node的定义包含在编译单元中(= C mumble for file),您可以在其中使用该结构。
答案 1 :(得分:0)
编译器的错误听起来不正确。不允许的是访问不完整类型的内部属性,因为它需要知道它的内部。 current->next
是尝试从指针获取不完整类型的内部数据。如果您想这样做,则需要在同一struct node
文件或包含.c
文件(标题)中包含.h
的完整类型定义。