主要内容

通过结构的例子

addStructFieldsaddStructByRef功能

shrlibsample示例库包含两个函数c_struct结构输入参数。c_struct被定义的shrlibsample.h头文件。

struct c_struct{双p1;短p2;长p3;};

两个函数和结构中的字段的值。的输入addStructFieldsc_struct。的输入addStructByRef是一个指针c_struct。这个函数也求和后修改的字段值。

addStructFields函数

addStructFields函数中的字段的值c_struct结构。

EXPORTED_FUNCTION双addStructFields (struct c_struct st){双t = st.p1 + st.p2 + st.p3;返回t;}

MATLAB®函数签名:

返回类型 的名字 参数
addStructFields (struct c_struct)

addStructByRef函数

addStructByRef函数中的字段的值c_struct结构,然后修改字段。函数返回总和计算之前修改的字段。

EXPORTED_FUNCTION双addStructByRef (struct c_struct * st){双t =圣- > p1 +圣- > p2 +圣- > p3;圣- > p1 = 5.5;圣- > p2 = 1234;圣- > p3 = 12345678;返回t;}

由于函数修改输入参数,MATLAB还返回类型的输入作为一个输出参数c_structPtr。MATLAB函数签名:

返回类型 的名字 参数
(双
c_structPtr]
addStructByRef (c_structPtr)

你可以通过MATLAB结构的功能,让MATLAB autoconvert论点。或者你可以通过一个指向结构的指针,它可以避免创建的副本结构。

添加的值字段的结构

这个例子展示了如何通过MATLAB结构函数,addStructFields

创建和初始化结构sm。每个字段的类型

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

加载库包含addStructFields函数。

如果不是(libisloaded (“shrlibsample”)目录(fullfile (matlabroot,“外来的”,“例子”,“shrlib”)loadlibrary (“shrlibsample”)结束

调用的函数。MATLAB自动转换领域的结构sm库定义的c_struct

calllib (“shrlibsample”,“addStructFields”sm)
ans = 1177

Preconvert MATLAB结构之前添加值

这个例子展示了如何preconvert结构smc_struct在调用之前addStructFields。如果你不断地通过sm函数,preconverting消除所需的处理时间为每个函数调用MATLAB autoconvert结构。

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

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

加载库包含addStructFields函数。

如果不是(libisloaded (“shrlibsample”)目录(fullfile (matlabroot,“外来的”,“例子”,“shrlib”)loadlibrary (“shrlibsample”)结束

转换字段的类型,比赛c_struct结构类型,,,

sc = libstruct (“c_struct”,sm);

显示字段名称和值。

得到(sc)
476年p1, p2: -299 p3: 1000

添加字段值。

calllib (“shrlibsample”,“addStructFields”,sc)
ans = 1177

Autoconvert结构参数

这个例子展示了如何通过MATLAB结构C库函数,addStructByRef。当你通过结构、MATLAB自动转换字段类型,但MATLAB也使字段的一个副本。

加载库。

如果不是(libisloaded (“shrlibsample”)目录(fullfile (matlabroot,“外来的”,“例子”,“shrlib”)loadlibrary (“shrlibsample”)结束

创建一个结构。

年代。p1 = 476;年代。p2 = -299;年代。p3 = 1000;

调用addStructByRef

res = calllib (“shrlibsample”,“addStructByRef”,年代)
res = 1177

MATLAB不修改的内容结构年代,因为它不是一个指针。

年代
S =结构体字段:476年p1, p2: -299 p3: 1000

将指针传递给结构

这个例子显示了如何调用addStructByRef函数指针修改字段的输入参数。

如果不是(libisloaded (“shrlibsample”)目录(fullfile (matlabroot,“外来的”,“例子”,“shrlib”)loadlibrary (“shrlibsample”)结束

创建一个结构类型c_struct

年代。p1 = 20;年代。p2 = 99;年代。p3 = 3;

创建一个指针sp的结构。

sp = libpointer (“c_struct”,年代);sp.Value
ans =结构体字段:p1: 20 p2: 99 p3: 3

通过指向函数的指针。

res = calllib (“shrlibsample”,“addStructByRef”,sp)
res = 122

当您传递一个指针,函数修改的字段结构它指向。

sp.Value
ans =结构体字段:p1: 5.5000 p2: 1234 p3: 12345678

另请参阅

|

相关的例子

更多关于