c - 取消引用指针错误



我正在用c创建一个队列数据结构。

typedef struct Queue_node{
int value;
struct Queue_Node* next;
};
struct Queue_Node* front = NULL;
struct Queue_Node* R = NULL;
void Enqueue(int x) 
{
    struct Queue_node* temp = (struct Queue_node*)malloc(sizeof(struct  Queue_node*));
    temp->value = x;
    temp->next = NULL;
    if (front == NULL && R == NULL)
    {
       R = temp;
       front = R;
       return;
    }
    R->next = temp;
    R = temp;
}

在第 24 行(R->next = temp(,编译器告诉我:

取消引用指向不完整类型"结构Queue_node"的指针。

我无法访问R->next after声明,为什么?

你的代码中问题很少,首先在做typedef时给出别名。

typedef struct Queue_node{
    int value;
    struct Queue_Node* next;
}Queue_node;/*put alias name here */

其次,malloc()内存分配不正确

 struct Queue_node* temp = (struct Queue_node*)malloc(sizeof(struct  Queue_node*));

它应该是(分配内存等于Queue_node的大小,而不是Queue_node*(

 struct Queue_node* temp = malloc(sizeof(struct  Queue_node)); 

还要避免malloc()结果进行铸造。看到这篇文章 我投射了 malloc 的结果吗?

struct Queue_node{
int value;
struct Queue_Node* next;
};

typedef struct Queue_Node{
int value;
struct Queue_Node* next;
}Queue_Node;

会做到的。

虽然现有的答案已经告诉你,你的typedef缺少一个名字,但你有一个更简单的问题:

typedef struct Queue_node{
  int value;
  struct Queue_Node* next;
};

基本上错误的是一个简单的错别字!

定义一个struct Queue_node 。在其中,您希望使用指向不存在struct Queue_Node的指针。

在 C 结构标记中,类型名称或任何其他标识符区分大小写。

像这样更改类型定义

struct Queue_Node{
  int value;
  struct Queue_Node* next;
};

typedef struct Queue_Node{
  int value;
  struct Queue_Node* next;
} Queue_Node;

您也可以使用 Queue_node但在整个代码中使用相同的编写方式很重要。

相关内容

  • 没有找到相关文章

最新更新