传值、传地址、传名的区别
例题:
(1)引用调用(call-by-reference)
传入的是B[1]的地址,也就是说x的改变会影响B[1].
I=1;
x=x+2;//x为B[1],B[1]为3.
B[I]=10;//直接赋值B[1]为10
I=2;
x=x+2;//x为B[1],B[1]为12
执行完程序后B[1]为12,B[2]为2.
(2)传值调用(call-by-value)
传值是把实参的值赋值给形参,对形参的修改,不会影响实参的值。传入的仅为B[1]的值,x的变化不会对B[1]有影响。
I=1;
x=x+2;//B[1]无变化
B[I]=10;//直接赋值B[1]为10
I=2;
x=x+2;//B[1]无变化
执行完程序后B[1]为10,B[2]为2.
(3)传名调用(call-by-name)
传入的是“B[I]”这个名字,也就是说x的改变会影响B[I].
I=1;
x=x+2;//x为B[I],而I是1,所以B[1]变成了3
B[I]=10;//直接赋值B[1]为10
I=2;
x=x+2;///x为B[I],而I是2,所以B[2]变成了4
执行完程序后B[1]为10,B[2]为4.