Почему не увеличивается цикл for? - PullRequest
0 голосов
/ 20 июня 2019

Почему мой цикл for не увеличивается? Целое число «i» не увеличивается как-то, и это приводит к выводу первой позиции массива.

Я делаю следующее:


int* values = new int[10] {};

int& half(int* arr[]){

  //Here, the "i" doesn't increment  

  for(int i = 0; i < 10; i++){
      return *arr[i];
  }
}

int main(){
   int& a = half(&values);
   std::cout << a << std::endl;

   delete[] values;
   return 0;
}

Ответы [ 3 ]

5 голосов
/ 20 июня 2019

Оператор return вызывает немедленное завершение функции с указанным значением. В результате при выполнении оператора

return *arr[i];

внутри вашего цикла, функция остановится и вернет указанное значение. Это означает, что цикл не может выполняться несколько раз, так как он остановится после первой итерации.

0 голосов
/ 21 июня 2019

корень вашей проблемы return утверждение. Если вы вызываете его - ваша функция завершит свою работу со значением, переданным для возврата. Второе - вы делаете ненужную работу с указателями и ссылками. Возможно, вы забыли, что имя массива является ссылкой на его первый элемент.

И третье: поскольку есть и использование ссылок, указателей, ссылок, массивов и функций, но в некотором заблуждении - я предполагаю, что код - это своего рода способ изучения этих вещей - если так, вы можете напишите в комментариях - что вы хотите от своего кода и каким образом? - Чтобы я или другие пользователи могли помочь вам узнать и понять, как это сделать правильно

0 голосов
/ 20 июня 2019

для того, что вы пытаетесь сделать, вы должны добавить значения из цикла for в массив и вернуть этот список:

    int newValues[10] = {0};
    for(int i = 0; i < 10; i++){
       newValues[i] = i;
    }
    return newVaules;
...