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);
结果: