C中使用指针的for循环声明
对于循环,我有两个问题 我对使用链表和指针相当陌生。我看到一些代码试图使用C中使用指针的for循环声明,c,loops,pointers,struct,C,Loops,Pointers,Struct,对于循环,我有两个问题 我对使用链表和指针相当陌生。我看到一些代码试图使用for循环将数据插入链表。然而,for循环声明对我来说是完全陌生的,我不明白它是如何工作的 我对典型for循环的理解包括3个部分: 声明迭代器 循环条件 递增/递减迭代器 例如: main() { int i; for (i = 0; i < 5; i++) { //do something.... } } 循环1: 循环2: for(q=&labelptr,count=0;*q&&count
for
循环将数据插入链表。然而,for循环声明对我来说是完全陌生的,我不明白它是如何工作的
我对典型for循环的理解包括3个部分:
main()
{
int i;
for (i = 0; i < 5; i++) {
//do something....
}
}
循环1:
循环2:
for(q=&labelptr,count=0;*q&&countnextlabel),count++)
这些说法的真正含义是什么
编辑:感谢到目前为止的回复。我知道这两个循环现在都在做什么。我花了一些时间去理解两个初始化变量指针q和int count;对于(q=&labelptr,count=0;)
我以前不习惯在for循环的初始化部分看到两个声明,但现在已经清楚了。谢谢!一些供将来使用的参考。也可以查看C标记wiki。只需将鼠标悬停在C标记上,然后单击底部的“信息”
q=&labelptr
这是在循环开始时将q设置为指向labelptr*q
这必须为真,循环才能继续。当
为假时,循环结束。*q
将在q指向空指针或零(也称为空)时为假*q
q=&((*q)->nextlabel)
这将获取(*q)->nextlabel的地址
for (initializer; test; update)
body;
作为
这有时会使它们更容易阅读
循环1:
q
开始指向labelptr
;当q
不为空时,执行正文,然后通过跟随nextlabel
指针将q
移动到下一个标签
循环2:
for(q=&labelptr,count=0;
*q&计数<最大管数;
q=&(*q)->nextlabel),count++)
几乎是一样的事情,但在我们进行的过程中保持计数,如果循环达到
MaxTube
迭代,则退出循环。你似乎获得了否决票,因为你从来没有问过问题。你到底想知道什么?为什么C语言书籍或网站没有为你回答?如果你更改(3)中的“递增/递减”部分要更新,你的代码将完全融入其中。看看你的C++标签是误导性的。几乎任何C代码都可以是C++代码,但是如果C++是C,而不是C,那么你的代码将是如此糟糕的风格,你不应该在问题上有C++标签。你的项目(1)只是一个在ANSI C项目(1)中甚至不可用的选项。应该初始化“迭代器”(旧的C含义,而不是C++含义)。声明迭代器有一个较新的C选项,甚至初始化它也是可选的。声明或声明和初始化都可能发生在for循环之前。
for(q = &labelptr; *q; q = &((*q)->nextlabel)) {
for(q = &labelptr, count=0; *q && count< MAXTUBES; q = &((*q)->nextlabel), count++)
for (initializer; test; update)
body;
initializer;
while (test) {
body;
update;
}
for (q = &labelptr; *q; q = &((*q)->nextlabel))
for (q = &labelptr, count=0;
*q && count < MAXTUBES;
q = &((*q)->nextlabel), count++)