将空数组传递给函数,填充数组并获取值

时间:2018-11-08 16:34:31

标签: c++ arrays pointers parameters

从我的main方法中,我想声明一个double数组(但不初始化它)并将其传递给函数。在该函数中,将使用一些值初始化数组。 现在回到我的主要方法中,我想读取并显示这些值。

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*’

毫无疑问,我在传递参数方面有问题,但我不知道如何解决。

2 个答案:

答案 0 :(得分:0)

#include <iostream>
void 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;
    }
}

答案 1 :(得分:0)

对于double values[3];,值的类型为double[3],可能会衰减为double*

期望double*&要求类型为double*的真左值。而且临时不能绑定到 -const引用

您可能会更改为

  • void populateValues(double (&values)[3])
  • void populateValues(double* values)
  • 可以将
  • void populateValues(double*const &values)临时目录绑定到 const 参考。