为什么gcc说我有变量' newNode'未申报?

时间:2015-01-09 01:17:54

标签: c gcc linked-list undeclared-identifier

当我编译以下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; }

谢谢,

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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