gpt4 book ai didi

c - 将动态 3D 矩阵传递给函数

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:59 24 4
gpt4 key购买 nike

我有一些可以像这样访问的 3D 矩阵数据:data[x][y][z]

每个维度的大小仅在运行时已知。

我通过使用 (byte (*)[Y][Z]) malloc(…) 转换 malloc 来获取此数据。

当我调用这个函数时,我知道矩阵的维度,但在编译时不知道。因此我不知道如何声明我在函数中接收到这样的矩阵......

函数声明中此数据的参数类型是什么?

function(byte (*matrix)[][]) // doesn't work

最佳答案

声明函数:

function(size_t Y, size_t Z, byte matrix[][Y][Z])…

并调用它:

function(Y, Z, matrix);

C 支持可变长度数组(视版本而定,可选或必需,但支持在现代编译器中很常见),但被调用的函数不会自动知道维度。您必须以某种方式将它们传递给函数,并且在其声明中,函数必须说明维度。

注意维度一般可以是表达式;它们不必是传递的确切参数。例如,您可以这样做:

function(size_t Y, byte matrix[][2*Y][3*Y])…

例如,当 Y 为 10 时声明一个接受 matrix[something][20][30] 的函数。

关于c - 将动态 3D 矩阵传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47369904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com