为什么我的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;
}
答案 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。如果调用它-函数将通过传递返回的值结束其工作。
第二件事-您正在使用指针和参照进行不必要的工作-也许您可能忘记了数组的名称是对其第一个元素的引用。
第三件事:由于引用,指针,引用,数组和函数的存在和使用,但是以某种令人困惑的方式-我猜代码是学习这些东西的某种方式-如果是这样,您可以写注释-您希望代码执行什么操作以及以何种方式进行? -因此,我或其他用户可以帮助您学习和了解如何以正确的方式进行操作