为什么 for 循环不递增?

Why doesn't the for loop increment?

本文关键字:for 循环 为什么      更新时间:2023-10-16

为什么我的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;
}

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

return *arr[i];

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

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

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

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

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