一.传值调用
特点:形参取的是实参的值,形参的改变不会导致调用点所传实参的值发生改变 。相当于copy。
例题:
void swap (int x, int y)
{ int t;
t= x; x=y; y=t;
printf ("%d %d",x,y);
}
main()
{
int a=3 ,b=4;
swap (a,b);
printf("%d %d",a,b);
}
解:
传值时,a,b,x,y都有存储空间,相当于把a的值传给x,把b的值传给y。x,y的值copy了a,b的值。
因为是传值,所以调用swap方法之后,a,b的值不会有所改变。
所以输出的结果为4,3,3,4
二.传址调用
特点: 形参取得是实参的地址,即相当于实参存储单元的地址引用因此其值的改变同时就改变了实参的值。
例题:
void swap (int *x, int *y)
{ int *t;
*t= *x; *x=*y; *y=*t;
printf ("%d %d",*x,*y);
}
main()
{
int a=3 ,b=4;
swap (a,b);
printf("%d %d",a,b);
}
解:
传址:如代码所示,x,y均带有*(星号),说明x,y是指针。
x,y指向了a,b的存储空间,因为指向的是a,b的存储空间,当交换x,y值的时候,a,b的值也会随之而变化。
与传值不同的是:传址的x,y指向了a,b的存储空间
所以输出结果为:4,3,4,3