我可以在 for 循环期间更改索引的最大值吗?

时间:2021-04-25 18:29:18

标签: c for-loop pointers

我有这个 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 的值?或者也许可以放置一个指向数字的指针(如果是这样,我将何时以及如何引用它?)

1 个答案:

答案 0 :(得分:1)

for 循环中的表达式不需要采用特定形式;您可以使用任何表达式,但要遵守通常的 C 规则(或者,对于第一项,声明)。

for (i = 0; i < totaltri; ++i) 是一种编写循环以从 0 迭代到 totaltri 的方法。您不需要使用该表格或保持 totaltri 不变。每次循环迭代时都会执行测试条件 i < totaltritotaltri 的值不会被记忆并保持不变。您可以使用任意表达式作为测试条件,包括函数,如 for (i = CalculateStartPoint(stuff); TestWhetherLoopIsDone(i, stuff); UpdateIterator(&i))

但是,如果您打算在循环期间减少 totaltri,您需要小心如果 i 已经超过新的限制会发生什么。在这种情况下,当前的迭代是否会按照您希望的方式工作?

相关问题