c语言 - 为什么 gcc 说我有未声明的变量"newNode"?



当我编译以下 C 代码时,gcc 给了我一个错误,抱怨"newNode"在行中未声明return newNode但我不明白为什么。任何人都可以解释此错误或如何解决它吗?

node *insertNode(node *first, int cases) {
int i;
int m;
int n;
for(i=1;i<=cases-1;i++) {
    scanf("%d %d",&m,&n);
    node *newNode = (node *)malloc(sizeof(node));
    newNode->lower = m;
    newNode->upper = n;
    newNode->next = first;
    newNode = first;
}
return newNode; }

谢谢

newNode

循环中声明。 在块中声明的变量超出了块外的范围。 相反,您可能希望在循环开始之前声明一个指向堆上节点的指针数组,在循环中初始化它们,然后返回数组。 如果这样做,则必须将函数的返回类型更改为 node**

newNode 变量在for块(用大括号括起来的部分)内声明。因此,它仅对该块有效/声明,并且在该块之外不可见。该变量在 return 点不存在。

您需要为 node* s 数组创建一个node** newNodeList,为其malloc内存,在 for 循环中保存该空间中的单个node*,最后返回创建的newNodeList

相关内容

  • 没有找到相关文章

最新更新