在MATLAB中传递变量:按值传递机制

时间:2024-02-24 07:25:12

maltab程序与它们函数之间的交互用是按值传递机制。当一个函数调用发生时,MATLAB将会复制实参生成一个副本,然后把它们传递给函数。这次复制是非常重要的,因为它意味着虽然函数修改了输入参数,但它并没有影响到调用者的原值。这个特性防止了因函数修改变量而导致的意想不到的严重错误。

这一特性将在下面的函数中得到说明。这个函数中有两个输入参数:a和b在它的计算中,它修改了变量的值:

自定义函数sample.m:

function out = sample(a, b)
fprintf(\'函数Sample内(作为形参改变前): a = %d, b = %d %d\n\', a, b);
a = b(1) + 2*a;%6+2*2 =10
b = a .* b;    %10*[6 4]=[60 40]
out = a + b(1);%10+60
fprintf(\'函数Sample内(作为形参改变后): a = %d, b = %d %d \n\',a,b);

调用:test_sample.m

a = 2; b = [6 4];
fprintf(\'在进入sample函数之前: a = %d, b = %d %d\n\', a, b);
out = sample(a, b);
fprintf(\'在进入sample函数之后: a = %d, b = %d %d\n\',a,b);
fprintf(\'在进入sample函数之后: out = %d \n\', out);

结果: