[英]Compile error: base operand of ‘->’ has non-pointer type ‘Token’
[英]Compiler Error, Linked list: error: base operand of ‘->’ has non-pointer type ‘IntNodeType’
下面我有一些基本代码,我正在学习链表。 此函数传递一个数组并从中创建一个链表。 但是,当我尝试编译它时,我收到一个关于非指针类型的错误。 谁能告诉我我做错了什么? 谢谢
struct IntNodeType {
int value;
IntNodeType * next;
IntNodeType (int v=0, IntNodeType * p=NULL):value(v),next(p)
{
}
};
IntNodeType * InitList (int a[], int size)
{
IntNodeType *p;
p = new IntNodeType[size];
int i = 0;
while ( i < size )
{
p[i]->value = a[i];
if ( i == size - 1)
{
p[i] -> next = NULL;
break;
}
else
p[i] -> next = p[i+1];
i++;
}
return p;
}
为了正确编译你的代码,InitList 的主体应该是:
// ..
IntNodeType *p;
p = new IntNodeType[size];
int i = 0;
while ( i < size )
{
p[i].value = a[i]; // here
if ( i == size - 1)
{
p[i].next = nullptr; // here + nullptr
break;
}
else
p[i].next = &(p[i+1]); //here
i++;
}
return p;
请注意使用句点运算符而不是->
运算符。
尽管p
是数组类型(可以衰减为指针),但其内容不是指针。 p
包含size
许多IntNodeType
s。 对于最后注意到的行,您需要将其传递给非指针p[i+1]
还值得注意的是,您应该在NULL
使用nullptr
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.