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个
这个例子演示了如何预转换结构山猫
到结构
打电话之前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