为什么for循环不递增?

Why doesn't the for loop increment?

为什么我的 for 循环不递增? Integer "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;
}

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

return *arr[i];

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

对于您要执行的操作,您应该将 for 循环中的值添加到一个数组中,然后 return 该列表:

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

问题的根源在于 return 语句。如果你调用它——你的函数将以传递给 return 的值结束它的工作。 第二件事——你正在用指针和引用做一些不必要的工作——也许你可能忘记了数组的名称是对其第一个元素的引用。

第三件事:因为有引用、指针、引用、数组和函数的使用,但以某种令人困惑的方式 - 我猜代码是学习这些东西的某种方式 - 如果是这样,你可以在评论中写下——你想从你的代码中做什么以及以什么方式? - 所以我或其他用户可以帮助您学习和理解如何以正确的方式做到这一点