凌域 2023-03-18 10:11 采纳率: 70%
浏览 16
已结题

C语言循环语句中定义问题

#询问下C语言在while语句的循环中定义结构体变量指针的问题
第20行和第23行这里每循环一次就重复定义一次结构体指针p和尾指针last,就相当于执行了n次定义了n个p,但是为什么不会报错?
代码如下

#include<stdio.h>
#include<math.h>
#include<stdlib.h>

typedef struct _node{    
    int num;
    struct _node *next;        
}node;

int main()
{
    int t;
    node *head = NULL;

    
    do{
        scanf("%d",&t);
        if(t!=-1)
        {    
            node * p=(node*)malloc(sizeof(node));
            p->num=t;
            p->next=NULL;
            node *last= head;
            if(last){
            while(last->next){
                last=last->next;
            }
            last->next=p;
            }else
            {
                head=p;
            }
        }
        
    }while(t!=-1);
        
    node *q=head;
    while(q->next)
    {
        printf("%d\n",q->num);
        q=q->next;
    }
    
    
    
}

  • 写回答

4条回答 默认 最新

  • threenewbee 2023-03-18 10:49
    关注

    定义在循环里面并不会每执行循环创建一个这种变量,而是一共在堆栈上就有这么一个,并且变量只能在循环里被访问

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月19日
  • 创建了问题 3月18日