我是Matlab的新手。您可能会发现这个问题很愚蠢,但我真的很想知道下面的语句是按值传递操作还是按引用传递操作。

I = imread('logo.png');
binaryImage = im2bw(I, 0.4);
Itemp = binaryImage;
Itemp是一个新的矩阵,其值是从binaryImage复制的,还是只是一个指向binaryImage的指针?

最佳答案

它通过引用传递,直到您修改Itemp为止。

当您修改Itemp时,matlab将binaryImage复制到Itemp,然后对其进行修改。

一阵子我做了一些有趣的测试。
如果您这样做:

A=rand(100);B=A;C=B;D=A;E=B;

内存中仅保留一份副本。如果您修改A
A(1)=1;

然后,matlab为为新A的矩阵创建一个的新副本,并且变量BCDE仍然指向旧A的矩阵。

09-25 22:14
查看更多