当我编译以下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; }
谢谢,
丹
答案 0 :(得分:3)
newNode
在循环中声明。块中声明的变量超出块的范围。相反,您可能希望在循环开始之前声明堆上节点的指针数组,在循环中初始化它们,然后返回数组。如果这样做,则必须将函数的返回类型更改为node**
。
答案 1 :(得分:0)
newNode
变量在for
块(由大括号括起来的部分)内声明。因此,它仅对该块有效/声明,并且在其外部不可见。该变量在return
处不存在。
您需要在node** newNodeList
循环中为node*
s,malloc
内存数组创建for
,保存单node*
s在该空间中,最后返回创建的newNodeList
。