int * decrementArrayElements(int numbers[], int size){
for (int &x: numbers)
{
x = x-1;
}
return numbers ;
}
字符串
以及所提到的我试图dec瓦尔的每个数组ele由1的范围为基础
如果我尝试正常的for循环,它就能工作
int * decrementArrayElements(int numbers[], int size){
// int n= sizeof(numbers)/sizeof(numbers[0]);
for (int i=0; i<size; i++)
numbers[i]=numbers[i]-1;
return numbers;
}
型
所以请解释一下这背后的原因
1条答案
按热度按时间7fhtutme1#
参数
int numbers[]
实际上是一个指针,而不是数组。基于范围的循环不适用于指针。如果你有一个C风格的数组,不管出于什么原因,你需要安全地传递给一个函数,你可以使用一个函数模板。这允许编译器从数组的类型推导出数组的大小。
字符串
产出:
型
在这种情况下,返回指针的模式可能没有那么有用。它更有可能被滥用。我倾向于使用函数
void
。您可能需要考虑使用
std::array
,它具有更好的封装性,并且(与C风格的数组不同)具有与其他类型一致的复制语义。型