废话不多说,直接上程序:
proc iml;
start square(a,b);
a=b##2;
finish;
x={9 5};
y={10 4};
do i=1 to 2;
run square(x[i],y[i]);
end;
print x y;
run;
得到的矩阵x和y并未发生改变,而如果换另外一种形式:
proc iml;
start square(a,b);
a=b##2;
finish;
x=9;
y=10;
run square(x,y);
print x y;
run;
得到的x值将会发生改变。
这两个程序为何会得到两种不同的结果呢?
另外我知晓第二个程序中当模块square结束后局部变量a,b会将其值赋给全局变量x,y,所以x值会发生改变,但是为何在第一个程序中不能得到相同的结果呢?