使用for语句从数组创建变量

时间:2010-08-29 03:43:31

标签: c++ arrays variables for-loop

我有一组数字需要在实际使用之前从函数传递给其他一些函数。我认为一个数组是一个很好的方法,但我不记得如何做我想做的事情。代码看起来像这样

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
    }

我是以错误的方式解决这个问题吗?

5 个答案:

答案 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
}

不确定我是否理解你的问题......