我希望这个循环将值添加到名为coefficient1-5的5个不同变量中, 我知道如何使用数组,但我希望变量是常规整数。
for(i=0;i<=4;i++){
coefficient(i) = Dice();
}
我该怎么做? 谢谢!
答案 0 :(得分:3)
您无法在运行时在C中计算变量名称,因此无法完成。你需要一个数组,但如果变量本身不在数组中,你可以使用指针数组。
int coefficient1;
int coefficient2;
int coefficient3;
int coefficient4;
int coefficient5;
int *ptrs[] = {
&coefficient1,
&coefficient2,
&coefficient3,
&coefficient4,
&coefficient5,
};
for(i=0;i<=4;i++){
*ptrs[i] = Dice();
}
但如果这是一个真实案例,只需自己展开小循环
coefficient1 = Dice();
coefficient2 = Dice();
coefficient3 = Dice();
coefficient4 = Dice();
coefficient5 = Dice();
答案 1 :(得分:1)
简洁地说,你没有。
可能实现它的唯一机制是动态加载。在使用dlopen()
和dlsym()
的系统上,如果变量是外部的,您可以在适当的句柄上使用dlsym()
查找它们,但这是一个破解坚果的大锤 - 和一个首先不需要开裂的螺母。请注意,这不适用于局部变量(无论是自动变量还是静态变量),并且可能不适用于文件范围内的静态变量。
for (i = 0; i <= 4; i++)
{
switch (i)
{
case 0: coefficient1 = Dice(); break;
case 1: coefficient2 = Dice(); break;
case 2: coefficient3 = Dice(); break;
case 3: coefficient4 = Dice(); break;
case 4: coefficient5 = Dice(); break;
}
}
请注意,写一下会更好:
coefficient1 = Dice();
coefficient2 = Dice();
coefficient3 = Dice();
coefficient4 = Dice();
coefficient5 = Dice();
这是一个非野蛮的方案,而你不能使用数组的系数;放弃循环,因为你没有要使用的数组。
这使用循环和辅助数据结构(指针数组)。这不是一个好主意。
int *coeffs[] = { &coefficient1, &coefficient2, &coefficient3, &coefficient4, &coefficient5 };
for (i = 0; i <= 4; i++)
*coeffs[i] = Dice();