【问题标题】:Does not name a type不命名类型
【发布时间】:2020-09-19 11:05:05
【问题描述】:

不知道为什么编译器给出“'nodes'没有命名类型”错误。

struct node;
struct node{
    int data;
    struct node* left;
    struct node* right;
};
struct node *nodes[1024];
nodes[1]->data = 1;
nodes[1]->left = NULL;
nodes[1]->right = NULL;

【问题讨论】:

  • 你应该问问别人为什么会这样。
  • 除了你没有为nodes[1]指针分配内存(这应该给你未定义的行为)之外,代码应该编译。
  • 可能你没有为节点指针分配类型?
  • 也尝试使用 malloc 函数通过 (struct node* ) malloc 分配内存
  • 这是在函数内部吗?

标签: c++


【解决方案1】:

现在我假设您完全按照指定编写代码:

struct node *nodes[1024];
nodes[1]->data = 1;
nodes[1]->left = NULL;
nodes[1]->right = NULL;

您收到编译器错误的原因是因为那不是有效的 C++ 代码。

但是如果你把这段代码移到一个函数中,它会编译得很好:

struct node *nodes[1024];

void AddFunction()
{
  nodes[1]->data = 1;
  nodes[1]->left = NULL;
  nodes[1]->right = NULL;
}

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 2013-03-25
    • 2016-01-04
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多