2010-08-29 35 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];等等。我不知道我在想什麼,我可以不知道,哈哈。

相關問題