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