Matlab结构中的引用相等。结构可以有多个指向同一对象的字段名吗?

时间:2014-04-07 00:47:56

标签: matlab pointers memory struct

如果我在Matlab中有一个struct,其中多个字段使用相同的对象定义,那么它会被视为内存中的一个对象还是为每个字段重新创建?换句话说,我想为一个对象创建多个字段名称,这在Matlab中可能吗?

例如,

function output = fn(input)

output = struct('field1',input,'field2',input)

end

output会包含两份input还是一份?

1 个答案:

答案 0 :(得分:0)

我最近找到了一种找到答案的方法。可以在Matlab cmd中输入以下内容。

A=magic(3);
S=struct('field1',A,'field2',A);
format debug
S.field1
S.field2

我的输出是

>> S.field1

ans =


Structure address = 369610c0 
m = 3
n = 3
pr = 3fb54e40 
pi = 0
     8     1     6
     3     5     7
     4     9     2

>> S.field2

ans =


Structure address = 369610c0 
m = 3
n = 3
pr = 3fb54e40 
pi = 0
     8     1     6
     3     5     7
     4     9     2

请注意,两个字段的pr值都相同。

我认为pr是指向矩阵实部的指针。因此,由于两个字段共享相同的指针,因此不存在同一对象的重复。