我正在尝试将三维数组传递给这样的函数:
void example( double*** bar ) {
// Stuff
}
int main() {
double[3][2][3] foo;
// Initialize foo
example( foo );
return 0;
}
这导致 gcc 给我“无效的指针类型”。我应该怎么做?我可以将整个论点变成一个一维数组并安排我的数据以适应它,但是有更优雅的解决方案吗?
编辑:
另外,我不能总是指定每个子数组的长度,因为它们的大小可能不同。例如:
int* foo[] = { { 3, 2, 1 }, { 2, 1 }, { 1 } };
如果有帮助的话,我正在尝试为神经网络中的神经元批量传递输入。每个神经元都有不同数量的输入。
最佳答案
只需使用double*
。多维数组连续存储在内存中,因此非常欢迎您自行调整。这就是位图在 OpenGL 上的传递方式。
关于c - 如何在 C 中传递可变大小的多维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30037954/