c - 通过 mex 函数返回 C 结构体

标签 c matlab mex

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

最佳答案

如果您严格使用 C 语言,解决方案是使用指针。指针可以让你告诉你的程序“嘿,我将把这个内存地址传递给你,我告诉你这个地址是什么,然后你就可以为我做一些事情,而不必自己处理它”。当在这方面使用指针时,它们的功能非常强大,能够更改常量的值。然而,这种能力经常被滥用或误用,因此许多语言对指针的使用施加了限制,或者创建自己的解决方法来实现其功能。

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

关于c - 通过 mex 函数返回 C 结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9639196/

相关文章:

C编程strcat使用指针

matlab - 使用 MATLAB 搜索插入我的设备的外部硬盘驱动器的路径?

matlab - 如何配置 CMake 来编译 MEX 文件?

MySQL 和 MATLAB 64 位

matlab - 在一个图中对齐轴

c++ - mex 与 MATLAB2013a 无法识别的开关 : -o

c - 如何改进这些大小写转换功能?

c - 内存布局和变量声明顺序

c - C 中的 For 循环循环次数超出了应有的次数。为什么?

arrays - 动态填充空单元格