【发布时间】:2017-07-23 17:56:38
【问题描述】:
据我所知,for 循环具有这种结构“for(init;condition;increment)”并一直持续到条件不为零或不为真。现在,我遇到了这样的代码:
struct node
{
int no;
struct node *next;
};
struct node *first;
void creatlist()
{
char ch='y';
struct node *ptr,*nw;
while(ch!='n')
{
printf("\nEnter item in list");
nw=(struct node*)malloc(sizeof(struct node));
scanf("%d",&nw->no);
nw->next=0;
if(first==0)
{
first=nw;
}
else
{
for(ptr=first ;ptr->next!=0;ptr=ptr->next);
{
ptr->next=nw;
}
}
printf("\nDo you want to countinue y\n");
ch=getch();
}
}
我对带有“ptr->next!=0”条件的 for 循环有一些理解问题,因为循环正在进行,即使“ptr->next”每次都为零,但据我所知,不应该。谁能帮我找到解释?
【问题讨论】:
-
相信我
ptr->next!=0并不总是0。那不可能是问题。使用调试器看看会发生什么。 -
我认为你应该用
NULLs 替换零。 -
你的 for 循环有一个尾随分号。为什么?
-
“据我所知,循环具有这种结构“for(init;condition;increment)”并一直持续到条件不为零或不为真。 - 这是三个循环语句之一。目前尚不清楚“直到条件不为零或不为真”是什么意思。在 C 中,非零值的计算结果为真。而
for循环是while循环的语法糖。您会在每本 C 书籍中找到两者的解释。什么不清楚?我们不是“解释我在这里找到的代码”的网站。 -
你怎么知道'ptr->next 为零'?你的调试器?
标签: c loops pointers data-structures linked-list