我有这个 for 循环:
for (i = 0; i < totaltri; ++i) {
triptr = &(trilist[i]);
pt1ptr = &(triptr->corner[0]);
struct point t1 = { pt1ptr->x, pt1ptr->y, pt1ptr->z };
pt2ptr = &(triptr->corner[1]);
struct point t2 = { pt2ptr->x, pt2ptr->y, pt2ptr->z };
pt3ptr = &(triptr->corner[2]);
struct point t3 = { pt3ptr->x, pt3ptr->y, pt3ptr->z };
cutorthrow(p, t1, t2, t3, v, i);
printf("TRIANGLE NUMBER: %d\n", i + 1);
}
然而,数字 totaltri
有时会变成 totaltri-1
(如果三角形已被删除)。
是否可以更改 totaltri
的值?或者也许可以放置一个指向数字的指针(如果是这样,我将何时以及如何引用它?)
答案 0 :(得分:1)
for
循环中的表达式不需要采用特定形式;您可以使用任何表达式,但要遵守通常的 C 规则(或者,对于第一项,声明)。
for (i = 0; i < totaltri; ++i)
是一种编写循环以从 0 迭代到 totaltri
的方法。您不需要使用该表格或保持 totaltri
不变。每次循环迭代时都会执行测试条件 i < totaltri
。 totaltri
的值不会被记忆并保持不变。您可以使用任意表达式作为测试条件,包括函数,如 for (i = CalculateStartPoint(stuff); TestWhetherLoopIsDone(i, stuff); UpdateIterator(&i))
。
但是,如果您打算在循环期间减少 totaltri
,您需要小心如果 i
已经超过新的限制会发生什么。在这种情况下,当前的迭代是否会按照您希望的方式工作?