为什么for循环不递增?

时间:2019-06-20 19:31:15

标签: c++ arrays stack heap

为什么我的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 个答案:

答案 0 :(得分:5)

return语句使函数立即以指定值退出。结果,当您执行语句时

return *arr[i];

在循环内,该函数将停止运行并返回指示的值。这意味着循环不能执行多次,因为它会在第一次迭代后停止运行。

答案 1 :(得分:0)

对于要执行的操作,应将for循环中的值添加到数组中并返回该列表:

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

答案 2 :(得分:0)

问题的根源是return statement。如果调用它-函数将通过传递返回的值结束其工作。 第二件事-您正在使用指针和参照进行不必要的工作-也许您可能忘记了数组的名称是对其第一个元素的引用。

第三件事:由于引用,指针,引用,数组和函数的存在和使用,但是以某种令人困惑的方式-我猜代码是学习这些东西的某种方式-如果是这样,您可以写注释-您希望代码执行什么操作以及以何种方式进行? -因此,我或其他用户可以帮助您学习和了解如何以正确的方式进行操作