struct t_Node
{
Element info;
struct t_Node* next;
};
当我尝试编译时,我一直收到此错误,是否有任何请求可以解释为什么,以及如何解决? 错误出现在下面的代码中。
Node* createNode(Element e)
{
Node* node = (Node*) malloc(sizeof(struct t_Node));
if(node == NULL)
return NULL;
(*node)->info = e; // here
(*node)->next = NULL; // and here
return node;
};
答案 0 :(得分:2)
当您尝试将内容编写到编译器不理解的结构中时,会发生该错误。
根据您展示的代码段,您已定义t_node
,但您使用createNode
中名为Node
的结构。
也许你需要添加一个typedef?
struct t_Node
{
Element info;
struct t_Node* next;
};
typedef struct t_Node Node;
答案 1 :(得分:1)
假设您忘记在此处写入typedef声明(但您在代码中写了),您的语法中会出现另一个错误。
此
node->info = e; // here
node->next = NULL; // and here
和这个
(*node).info = e; // here
(*node).next = NULL; // and here
是对的。
x为指针:
x->y becomes (*x).y so it is like you have written (*(*node)).info and (*(*node)).next
你的代码中的(这是错误的)。
答案 2 :(得分:0)
你真正的问题在于你正在做以下事情:
(*node)->info = e; // here
(*node)->next = NULL; // and here
它应该是:
(*node).info = e;
(*node).next = NULL;
或
node->info = e;
node->next = NULL;
您应该看看如何正确使用指针。
另一个问题是您使用的是名为 Node_t 的结构,然后是另一个节点。 但是从你的错误中我敢打赌你已经使用过typedef而没有显示它。