我试图将 mex 函数中创建的结构返回给 matlab。现在有一个函数 mxCreateStructArray ,但我正在为树数据结构创建节点类型结构,因此它是形成的递归链表。此外,节点是通过动态内存分配形成的。所以,我不可能预先分配内存。我不知道如何将这个结构传输为 matlab 类型结构作为函数的输出。
最佳答案
如果您严格使用 C 语言,解决方案是使用指针。指针可以让你告诉你的程序“嘿,我将把这个内存地址传递给你,我告诉你这个地址是什么,然后你就可以为我做一些事情,而不必自己处理它”嗯>。当在这方面使用指针时,它们的功能非常强大,能够更改常量的值。然而,这种能力经常被滥用或误用,因此许多语言对指针的使用施加了限制,或者创建自己的解决方法来实现其功能。
MATLAB does have some pointer functionality ,但是返回整个树的方法是不好的做法。这么多的信息,更不用说其效率,在很多方面都是危险的。返回整个节点树的函数可能是无用的,甚至是不必要的信息。您应该尝试重新设计您的程序,使其从头节点开始,递归地沿着树向下并从尾部向上返回每个节点。
关于c - 通过 mex 函数返回 C 结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9639196/