c - 如何在 C 中传递可变大小的多维数组?

标签 c arrays multidimensional-array

我正在尝试将三维数组传递给这样的函数:

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/

相关文章:

c - 在 C 中从文件读取/写入结构体

c - "step"不是在程序结束时结束程序,而是在另外 5 个 "step"之后结束

python - numpy:将 argsort 应用于数组

JavaScript:删除对象内的数组元素

java - 如何用文本文件中的字符填充二维字符数组

arrays - 在 Julia 中连接多维数组

c - 汉明重量只写在二元运算中?

一对指向采用不同类型参数的不同函数的指针可以兼容吗?

Java - 数组中的 NullPointerException

matlab - 在不使用 sub2ind 的情况下使用下标访问值