Использование оператора for для создания переменных из массива - PullRequest
0 голосов
/ 29 августа 2010

У меня есть набор чисел, которые мне нужно передать из функции в несколько других функций, прежде чем она будет фактически использована. Я полагал, что массив - хороший способ сделать это, однако я не могу вспомнить, как делать то, что я хочу сделать. Код выглядит так

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 ]

4 голосов
/ 29 августа 2010

Нет способа сделать это без первоначального использования массива (т.е. int set[3]) или выполнения чего-то более сложного, чем в первом примере.

Конечно, вы можете переписать свой код, например

int settings[3];
for (int i = 0; i < 3; ++i)
{
    cout << "Setting " << i+1;
    cin >> settings[i];
}
0 голосов
/ 29 августа 2010

Если функциям, которые вы вызываете, необходимо изменить содержимое массива, измените ваш массив 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
}

Не уверен, правильно ли я понял ваш вопрос ...

0 голосов
/ 29 августа 2010

Извините, это был глупый вопрос, мне нужно сделать перерыв. Что я сделаю установить все cin >> настройка [0]; и т.д. Я не знаю, о чем я думал, могу ли я спросить, лол.

0 голосов
/ 29 августа 2010

Я думаю, что это неправильный подход. Если вы передаете массив, почему бы не использовать значения в массиве?

вроде, вместо

printf("Hello %s",setting3);

сделать

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

или если вы хотите проявить фантазию и использовать ассоциативный массив

printf("Hello %s",setting['first_name']);
0 голосов
/ 29 августа 2010

Вы не можете ссылаться на переменные из имени, вычисленного во время выполнения, как это в C ++. Вы можете либо передать сам массив непосредственно рассматриваемой функции (это, вероятно, лучший подход), либо связать переменные вручную во время компиляции:

// NOTE - this is ALMOST ALWAYS not the right thing to do!
int setting0 = setting[0];
int setting1 = setting[1];
int setting2 = setting[2];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...