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