【发布时间】:2019-03-28 06:34:18
【问题描述】:
在 C++ 中,数组应该通过引用传递给函数。因此,在下文中,函数foo 应该通过引用隐式使用数组inp。
void foo(double inp[10]) {}
void foo1(double (&inp)[10]) {}
我的问题是,既然两个函数应该对输入变量有相同的解释,为什么我们可以在下面调用foo,但我们不能调用foo1?
int main()
{
double ary[20];
foo(ary); // compiles without any problem.
foo1(ary); // compiler error: invalid initialization of reference of type ‘double (&)[10]’ from expression of type ‘double [20]’
return 0;
}
【问题讨论】:
-
第一个是来自C的误导神器,其实和
void foo(double* inp)是一样的 -
改用
std::array。
标签: c++