孔型结构示例

addStructFields地址结构引用功能

这个shrlibsample公司示例库包含两个函数结构结构输入参数。结构定义在shrlibsample.h文件头文件。

结构c_struct{double p1;short p2;long p3;};

这两个函数对结构中字段的值求和。输入到addStructFields结构. 输入到地址结构引用是指向结构. 此函数还将在对值求和后修改字段。

addStructFields功能

这个addStructFields函数对结构结构。

EXPORTED_FUNCTION双addStructFields(结构c_struct ST){双T = st.p1 + st.p2 + st.p3;返回吨;}

MATLAB®函数签名是:

返回类型 姓名 论据
双重的 addStructFields (结构c_结构)

地址结构引用功能

这个地址结构引用函数对结构结构,然后修改字段。函数返回在修改字段之前计算的总和。

导出的函数double addStructByRef(struct c_struct*st){double t=st->p1+st->p2+st->p3;st->p1=5.5;st->p2=1234;st->p3=12345678;return t;}

由于函数修改的输入参数,MATLAB也返回输入类型的一个输出参数c_structPtr. MATLAB函数签名是:

返回类型 姓名 论据
[加倍,
结构图]
地址结构引用 (c_structPtr)

您可以将MATLAB结构传递给函数,并让MATLAB自动转换参数。或者可以将指针传递给结构,这样可以避免创建结构的副本。

在结构中添加字段值

这个例子展示了如何将MATLAB结构传递给函数,addStructFields.

创建并初始化结构山猫.每个字段的类型是双重的.

sm.p1=476;sm.p2=-299;sm.p3=1000;

加载包含addStructFields功能。

如果不(libisloaded('shrlibsample'))addpath(完整文件(matlabroot,'EXTERN','例子',“shrlib”))加载库('shrlibsample')结束

调用函数。MATLAB自动转换结构域山猫到的库定义结构.

调用库('shrlibsample','添加结构字段',山猫)
ans=1177个

添加值前预转换MATLAB结构

这个例子演示了如何预转换结构山猫结构打电话之前addStructFields. 如果你反复通过山猫对于函数,预转换消除了MATLAB为每个函数调用自动转换结构所需的处理时间。

创建并初始化一个MATLAB结构。

sm.p1=476;sm.p2=-299;sm.p3=1000;

加载包含addStructFields功能。

如果不(libisloaded('shrlibsample'))addpath(完整文件(matlabroot,'EXTERN','例子',“shrlib”))加载库('shrlibsample')结束

转换类型为的字段双重的,以匹配结构结构类型,双重的,短的长的.

SC = libstruct('结构',山猫);

显示字段名称和值。

获取(sc)
p1:476 p2:-299 p3:1000

添加字段值。

调用库('shrlibsample','添加结构字段',南卡罗来纳州)
ans=1177个

自动转换结构参数

该示例示出了如何将MATLAB结构传递给一个C库函数,地址结构引用.当您通过结构,MATLAB自动转换的字段类型,但MATLAB也使得领域的副本。

加载库。

如果不(libisloaded('shrlibsample'))addpath(完整文件(matlabroot,'EXTERN','例子',“shrlib”))加载库('shrlibsample')结束

创建结构。

S、 p1=476;S.p2=-299;S.p3=1000;

呼叫地址结构引用.

res=调用库('shrlibsample','addStructByRef',秒)
分辨率=1177

MATLAB不改变结构的内容S公司,因为它不是指针。

S公司
S =带字段的结构:p1:476 p2:-299 p3:1000

将指针传递到结构

此示例显示如何调用地址结构引用带指针的函数修改输入参数中的字段。

如果不(libisloaded('shrlibsample'))addpath(完整文件(matlabroot,'EXTERN','例子',“shrlib”))加载库('shrlibsample')结束

创建类型为的结构结构.

S、 p1=20;S.p2=99;S.p3=3;

创建指针服务提供商结构上。

sp=libpointer指针('结构',秒);标准值
答复=带字段的结构:p1:20 p2:99 p3:3

将指针传递给函数。

res=调用库('shrlibsample','addStructByRef',SP)
res=122

当您传递指针时,函数将修改它所指向的结构中的字段。

标准值
答复=带字段的结构:p1:5.5000 p2:1234 p3:12345678

另见

|

相关实例

更多关于