将“复制浮点数组”设置为“多维数组”
set copy array of float to multidimensional array
我试图理解 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
不知何故,创建的数组是浮点数[2]的信息丢失了,当我尝试将其转换为浮点数[2]时,我得到:
ISO C++ forbids casting to an array type 'float [2]'
您必须使用
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;
}
这应该可以解决有关未定义行为的所有问题,如此问题之前标记的副本中所述。
相关文章:
- 指向多维数组C++的指针
- C++使用数组作为多维数组,尽管将其初始化为带有指针的 1D
- 使用递归模板动态分配的多维数组
- 多维数组 C++ 中数组下标的类型"int[int]"无效
- 为什么我们将单个或多维数组的大小声明为常量值?
- 字符在多维数组中重复
- 如何将零填充的多维数组传递给 C++ 中的函数?
- 有效地计算多维数组的累积和?
- 在堆栈上C++大型多维数组
- 将字节数组转换为多维数组
- 多维数组存储三种不同的数据类型?
- 动态多维数组,键输入C++
- 还有其他方法可以在数组中写入多维数组吗?
- 初始化不是整数的巨大常量多维数组的最佳方法是什么?
- 使用新运算符C++创建多维数组的简单方法
- 将指向多维数组向量中的单个项的指针传递给函数 c++
- C++按 2 列对多维数组进行排序
- 为什么在 C/C++ 中的多维数组中 a[0] 与 a 相同?
- 为什么多维数组中的空字符串文本衰减为空指针?
- 基于 std::array 的多维数组