2010-08-29 76 views
0

我有一组数字,我需要从一个函数传递给几个其他函数,然后才能真正使用它。我认为一个数组是一个很好的方法来做到这一点,但我不记得如何去做我想做的事情。代码看起来像这样使用for语句来创建数组中的变量

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

我知道for循环是错误的,但这正是我希望解决的问题。 – 2010-08-29 03:44:01

+0

变量名称是编译时构造,它们在运行时不存在。你最好的选择是使'setting0-2'成为一个数组,'设置[2]'。 – GManNickG 2010-08-29 03:46:32

回答

0

如果你调用需要改变数组内容的功能,改变你的阵列东方电气这样的:

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 
} 

不知道如果我的理解你的问题很对...

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]; 
4

有没有办法做到这一点不用最初使用数组(即int set[3]),或者做比第一个例子更复杂的事情。

当然,你可以重写你的代码,如

int settings[3]; 
for (int i = 0; i < 3; ++i) 
{ 
    cout << "Setting " << i+1; 
    cin >> settings[i]; 
} 
0

我认为这是错误的做法。如果你传递一个数组,为什么不使用数组中的值?

一样,而不是

printf("Hello %s",setting3); 

printf("Hello %s",setting[3]); 

,或者如果你想成为幻想和使用关联数组

printf("Hello %s",setting['first_name']); 
0

对不起,这是一个愚蠢的问题,我需要休息一下。我会做的是 设置全部 cin >>设置[0];等等。我不知道我在想什么,我可以不知道,哈哈。