How do I pass by reference, a structure to a function (an .m file) in an argument list?
9 次查看(过去 30 天)
显示 更早的评论
I am calling an .m file function which as format: "function[] = myFunctionName(structA,structB)" in top line, followed by lines of code and completed with an end statement. I am sendiing the function very large data entities,...huge arrays for example. And I want to edit (change values) these arrays in the function. So when I call this function in the body of the program,...ie myFunctionName(hugeStructure) I suspect hugeStructure will be sent as a copy (value) which will take a lot of memory and not change the value in the calling routine. If hugeStructure is sent by reference (ie a pointer), then only the structure address will be sent which cuts way down on overhead and memory in addition to allowing me to change the structure in the calling routine. Q1: is there a way I can force hugeStructure be sent via reference? Q2: If hugeStructure is in both the input list and output list, will it be sent by reference?
Function main:
function[] = main()
inStruct.Val1 = 5;
inStruct.Val2 = 105;
inStruct.Val3 = 505;
simpleMath2(inStruct);
aaa = 5;
end
Calls function simplemath2:
function[] = simpleMath(hugeStructure)
hugeStructure.Val1 = hugeStructure.Val1 + 50;
hugeStructure.Val2 = hugeStructure.Val2 + 50;
hugeStructure.Val3 = hugeStructure.Val3 + 50;
end
The values in function main do not change after calling simplemath2.
0 个评论
采纳的回答
Sean de Wolski
2022-5-3
Author a simple handle class that has the structure as a property
classdef referenceStruct < handle
properties
S struct
end
end
Now use this.
rs = referenceStruct;
rs.S.Var1 = pi;
somefunction(rs)
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!