将长度可变的 C99 静态 3D 数组传递给函数
Passing C99 static 3D array with variable length to a function
我正在努力将可变长度的 C99 静态 3D 数组传递给函数。我知道以前在SO上已经问过这个问题,但是到目前为止我尝试了我找到的所有解决方案,但没有一个奏效。我有以下代码:
int N;
int foo( ? ){
// do stuff
}
int main(){
cin >> N;
int arr[N][N][N];
foo(arr);
return 0;
}
问题是放什么而不是"?"。除其他外,我尝试创建一个指向此 3D 数组的指针并根据此处的答案传递指针,但这也可以编译。
C++没有变量样式的数组。 您可以做的是将数组的地址强制转换为指针,并将维度传递给指针,甚至强制转换为指向大小相同但形状不同的数组的指针,然后取消引用该指针。
如果您在有限数量的可能形状之间进行选择,您可以使用一种C++技术来加糖,那就是声明一个template< size_t L, size_t M, size_t N> int foo( int arr[L][M][N])
。 另一个是包装数组及其维度的多维数组类。 然后,您可以构造一个对象,该对象别名而不是复制数组,您可以将其索引为arr(i, j, k)
。
相关文章:
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- 如何计算 3d 数组中的索引值在内存中的位置?如何计算字符**中的索引值在内存中的位置?
- 我是 c++ 的新手,有没有一种算法可以找到 3d 数组中最接近的 0 的距离?
- 如何用零填充 3D 数组?
- 将长度可变的 C99 静态 3D 数组传递给函数
- c++ 从大型数组中读取 3D 坐标并计算它们之间的距离
- C :将矢量重新为3D数组
- 将动态 3D 数组发送到 C++ 中的函数
- C++ 3D 数组到 1D 会导致堆缓冲区溢出
- 初始化const 3D数组成员变量
- 处理3D数组的边缘和角案例的方法
- 将2D数组的实例分配给3D数组中的索引
- 使用 vector 在 c++ 中声明 3D 数组结构
- 为什么C CHAR数据类型3D数组通过参数第一个括号为空白
- 如何使用3D char数组调整双指针2D char阵列的大小
- 可以使用 std::copy 将 3D 数组复制到矢量
- 我的重载 [] 运算符不适用于伪 3D 数组
- 数据结构2d/3d瓦片数组C++
- 从 3D 数组转换为 1D 数组失败
- 如何将3D .OBJ对象表示为3D数组