通过mex函数返回C结构

时间:2012-03-09 18:33:07

标签: c matlab mex

我试图将在mex函数中创建的结构返回给matlab。现在有一个函数mxCreateStructArray,但我正在为树数据结构创建一个节点类型的结构,因此它是一个形成的递归链表。此外,节点由动态存储器分配形成。所以,我不可能预先分配内存。我不知道如何将形成的结构传输到matlab-type struct作为函数的输出。

1 个答案:

答案 0 :(得分:0)

如果你在严格的C中工作,那么解决方案就是使用指针。指针允许你告诉你的程序“嘿,我将把这个记忆地址告诉你,我告诉你这个地址是什么,你为我做的东西,而你自己不必为此工作”。当在这方面使用指针时,它们可以非常强大,能够改变常量的值。然而,这种权力经常被滥用或滥用,因此许多语言对指针的使用施加了限制,或者创建了自己的解决方法来实现其功能。

MATLAB does have some pointer functionality,但是您返回整个树的方法是不好的做法。那么多的信息,更不用说它的效率在很多方面都是危险的。返回整个节点树的函数可能是无用的甚至是不必要的信息。您应该尝试重新设计程序,使其从头节点开始,递归地沿着树向下并从尾部返回每个节点。