【发布时间】:2019-04-12 05:18:57
【问题描述】:
在我的 main 方法中,我想声明一个双精度数组(但不初始化它)并将其传递给一个函数。在该函数中,数组将使用一些值进行初始化。 现在回到我的 main 方法,我想读取并显示这些值。
populateValues (double*& values) {
values [0] = 100;
values [1] = 200;
values [2] = 300;
}
int main() {
double values[3];
populateValues(values);
for (int i=0; i <3; i++) {
std::cout << values[i] << std::endl;
}
}
但是,当我编译上述内容时,我收到错误消息:
error: invalid initialization of non-const reference of type ‘double*&’ from an rvalue of type ‘double*’
毫无疑问,我传递参数的方式有问题,但我不知道如何解决。
【问题讨论】:
-
populateValues (double* values) -
尽量避免使用 C 风格的数组。
std::array<double, 3>神奇地问题不再存在。 -
C++ 错误可能有点不透明(主要是因为很多东西都是有效的,语法错误可能类似于各种有效的东西。)您可以通过指针 (*) 传递参数,或引用 (&) - 但您不能同时使用两者,就像这样。您可以使用 STL 数组,如 @n.m。注释 - 在这种情况下,我建议通过引用传递(如果你都不使用,你会得到一个本地副本,并且值不会被传回。)
标签: c++ arrays pointers parameters