我遇到了一些对数组变量感兴趣的事情。假设我创建了
A=[1. 2;3 4]
然后定义B=A
。如果我然后设置A[1,1]=7
,则[1,1]
中的B
条目会发生变化。但是,如果我设置A=ones(2,2)
,则B
中的条目不会更改。
有任何意见吗?
答案 0 :(得分:1)
B=A
将A
分配给B
,不创建副本。因此A
和B
都指向同一块内存。改变B
中的内容也将不可避免地改变A
,反之亦然。 A
和B
相同,需与A === B
核对(请注意三个等号)。
您可以A
创建C = copy(A)
的副本。请注意,在这种情况下A == C
只有A !== C
,即它们具有相同的条目,但不是相同的。
A = ones(2,2)
分配一个新的2x2数组,并用1(ones(2,2)
)填充,然后将此数组分配给A
(A = ...
)。因此,与B
的任何连接都将丢失。请注意,如果您执行A .= ones(2,2)
(请注意指示就地分配的等号前面的点),您也会更改B
。