我有一组数字需要在实际使用之前从函数传递给其他一些函数。我认为一个数组是一个很好的方法,但我不记得如何做我想做的事情。代码看起来像这样
int set1; // variables that hold settings
int set2;
int set3;
cout << "Setting 1";
cin >> set1;
cout << "Setting 2";
cin >> set2;
cout << "Setting 3";
cin >> set3;
int settings[3] = {set1, set2, set3}; //array that holds variables
这就是数组的创建方式 然而,我希望能够做这样的事情,我知道有些语言可以(我很确定),但我不知道C ++是否可以,或者甚至调用这种方法(所以我不能谷歌吧)
int setting0;
int setting1;
int setting2;
for(int i=0; i<3; i++)
{
setting+i = setting[i]; // should set setting0 = setting[0]; etc
}
我是以错误的方式解决这个问题吗?
答案 0 :(得分:4)
如果没有最初使用数组(即int set[3]
),或者做比第一个例子更复杂的事情,就没有办法做到这一点。
当然,您可以重写代码,例如
int settings[3];
for (int i = 0; i < 3; ++i)
{
cout << "Setting " << i+1;
cin >> settings[i];
}
答案 1 :(得分:0)
您不能像在C ++中那样引用在运行时计算的名称中的变量。您可以选择将数组本身直接传递给有问题的函数(这可能是最好的方法),也可以在编译时手动绑定变量:
// NOTE - this is ALMOST ALWAYS not the right thing to do!
int setting0 = setting[0];
int setting1 = setting[1];
int setting2 = setting[2];
答案 2 :(得分:0)
我认为这是错误的做法。如果要传递数组,为什么不使用数组中的值?
喜欢,而不是
printf("Hello %s",setting3);
DO
printf("Hello %s",setting[3]);
或者如果你想要花哨并使用关联数组
printf("Hello %s",setting['first_name']);
答案 3 :(得分:0)
抱歉,这是一个愚蠢的问题,我需要休息一下。我要做的是 设置所有 cin&gt;&gt; [0]设定;我不知道我在想什么,我可以解开吗,哈哈。
答案 4 :(得分:0)
如果您正在调用的函数需要更改数组内容,请将数组decl更改为:
int *(settings[3]) = {&set1, &set2, &set3}; //array that holds pointers to variables
然后将你的循环改为:
for(int i=0; i<3; i++)
{
*(settings[i]) = setting[i]; // should set set1 = setting[0]; etc
}
不确定我是否理解你的问题......