C - 是否可以从 for 循环中递减 for 循环的最大值?

标签 c for-loop

例如:

void decrement(int counter) {
    counter--;
}

int counter = 20;
for (int i = 0; i < counter; i++) {
    for (int j = 0; j < counter, j++) {
        decrement(counter);
    }
}

理想情况下,我希望看到每次运行 for 循环时 counter var 都会递减,因此它运行的迭代次数少于 20 次。但是 gdb 显示在 decrement()counter 被递减,但是回到 for 循环 counter 实际上保持不变。

最佳答案

是的,这是可能的:

for (int i = 0; i < counter; i++) {
    counter--;
}

它在您的示例中不起作用的原因是因为您正在按值传递并修改值的副本。如果您传递一个指向变量的指针而不是仅仅传递值,它将起作用。

关于C - 是否可以从 for 循环中递减 for 循环的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2625585/

相关文章:

在 Eclipse SIGSEV 中编译 C 二进制文件

c - 方向似乎不会随着特定的电压范围而改变

c++ - 使用 "for"打破 "break"循环被认为是有害的?

c++ - 将显示数组的 5 个 for 循环压缩为 1?

c++ - for 循环中的 const 值

C、绑定(bind)失败: `Address Already in Use`

我可以假设 sizeof(uint8_t) = 1 吗?

c - 在单个递归函数中查找数组的最大值和最小值

c - for循环括号在c

javascript - document.getElementById(element).innerText = 变量