当我编译下面的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**
。
关于c - 为什么gcc说我没有声明变量'newNode'?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27852427/