c - 是否可以使用 for 循环更改 C 中的变量名?

标签 c variables for-loop loop-counter

这是一个一般性问题,因此没有我要尝试解决的实际代码。但我想知道的是,我可以使用 for 循环来更改 C 中变量的名称吗?例如,如果我有 part1part2part3part... 作为我的变量名;有没有办法将它附加到我的循环计数器,以便它会随着每次通过而增加?我玩弄了一些东西,似乎没有任何效果。

最佳答案

在 C 中,您不能“更改循环变量的名称”,但您的循环变量不必在编译时确定为单个变量。

例如,在 C 语言中没有理由不能这样做:

int i[10];
int j;

j = /* something */;

for (i[j] = 0 ; i[j] < 123 ; i[j]++)
{
    ...
}

或事件提供一个指针

void
somefunc f(int *i)
{
    for (*i = 0; *i<10; *i++)
    {
        ...
    }
}

为什么你想这样做并不明显,这意味着很难发布更有用的例子,但这里有一个例子,它使用递归来迭代可定义的层数深度并传递最里面的函数所有计数器变量:

void
recurse (int levels, int level, int max, int *counters)
{
    if (level < levels)
    {
        for (counters[level] = 0;
             counters[level] < max;
             counters[level]++)
        {
            recurse (levels, level+1, max, counters);
        }
        return;
    }

    /* compute something using counters[0] .. counters[levels-1] */
    /* each of which will have a value 0 .. max */
}

另请注意,在 C 中,确实没有循环变量这样的东西。在 for 语句中,形式为:

for ( A ; B ; C ) BODY

表达式 A 在开始时被评估一次。表达式 B 在每次执行 BODY 之前进行计算,如果计算结果为 0,则循环语句将终止(并且不执行 BODY)。表达式C 在每次执行 BODY 后进行计算。所以如果你喜欢,你可以写:

int a;
int b = /* something */;
int c = /* something */;
for ( a=0; b<5 ; c++ ) { ... }

虽然这通常不是一个好主意。

关于c - 是否可以使用 for 循环更改 C 中的变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29195908/

相关文章:

python - 将 Python C 扩展链接到另一个库的问题

c - 进程终止不影响 waitpid()

c++ - 按类型命名变量是一种不好的做法吗?

Symfony Twig : get Object property with a variable property

Java 循环缺少给定数组中的元素

python - 在 python 中使用两个 for 循环

c - 如果你在 C 中没有 %f,如何编写一个 C 程序来打印没有 %f 的小数点后 2 位小数?

c - 新手线程问题 (FFTW)

javascript - 变量中有太多空白(未捕获的语法错误 : Unexpected token ILLEGAL )

matlab - MATLAB 中的 Foreach 循环问题