将float的数组设置为多维数组

时间:2014-12-07 20:13:35

标签: c++ pointers multidimensional-array arduino

我试图理解c / arduino中的指针,它给我带来了问题:)

我有一个函数可以创建并返回一个指向浮点数组的指针:

float* CreateArray(int i) {
    float test[2];
    test[0] = float(i+1); 
    test[1] = float(i+2);
    return test;
}

我还定义了一个多维数组:

float data[2][2];

在我做任何事情之前,我希望数据看起来像这样:(它确实如此)

0 0
0 0

当我运行以下代码时:

float* array = CreateArray(22);
*data[1] = *array;

我希望数据看起来像这样:

0  0
23 24

但它看起来像这样:

0  0
23 0

不知何故,创建的数组是float [2]的信息丢失了,当我尝试将它转换为float [2]时,我得到:

ISO C++ forbids casting to an array type 'float [2]'

1 个答案:

答案 0 :(得分:0)

您必须使用std::array来访问返回的值,而不是使用从堆栈上本地定义的原始数组返回的指针:

std::array<float,2> CreateArray(int i) {
    std::array<float,2> test;
    test[0] = float(i+1); 
    test[1] = float(i+2);
    return test;
}

这应解决有关未定义行为的所有问题,如formerly marked duplicate中对此问题所述。