当我编译下面的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/

10-12 15:05