c - for循环内的值不递增

标签 c

for 循环中的值nn 在退出循环后变为0。我希望它按照循环中的描述增加。如何让 nn 在退出后保存它的值?

void branch(int *numbers, int left) {
    Int nb, nn;
    nb = 0;
    nn = 0;

    if (left != 0)
        for (int branchn = 1; branchn <= left; branchn++) {
            for (int index = 1; index <= branchn; index++) {
                *(buffer + nb) = *(buffer + nb) * 10 + *(numbers + nn++);
                printf("%d\n", nn);
            }

            nb++;
            length++;

            branch(numbers, left - 1);
        }
    else {
        branchop(length--);
        nb--;
    }
}

最佳答案

您的代码存在多个问题,其设计非常困惑:

  • 什么是Int
  • bufferlengthbranchop() 的定义是什么?
  • 为什么使用基于 1 的偏移量?数组索引是基于 C 的 0。
  • 你为什么使用递归?
  • nnnb是在branch()中自动存储的局部变量;每个新的递归调用都有自己的一组这些变量。您可能希望将这些 static 设置为由所有调用共享,包括递归调用,但代码会变得更加复杂。

我无法提供代码的更正版本,因为您没有提供任何关于它应该实现什么的线索,而且很难从发布的片段中分辨出来。

关于c - for循环内的值不递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45547154/

相关文章:

c++ - 为什么 "volatileQualifiedExpr + volatileQualifiedExpr"在 C 中不一定是 UB 而在 C++ 中是?

c - 将整个文件读入堆上分配的该区域

c - 从常量字符串初始化静态数组

c - 为什么只把字符串的第一个字符放入char?

c - 避免 printf() 中的尾随零

c - `sizeof` 的操作数是否使用 VLA 评估?

c++ - 如何使用C\C++在windows中实现linux管道

c - 程序没有显示预期的输出

c - 存储数据结构的有效且简单的方法是什么?

c - curr_node.ptr = &(next_node.ptr); 之间的区别和 curr_node.ptr = &next_node