#include<stdio.h>
int f( int y,int *x)
{y=y+*x; *x=*x+y;
}
void main( )
{
int x=2,y=4;
f(y,&x);
printf("%d %d\n",x,y);
}
f函数中,y是值传递,x是传址。
任何函数中都可以进行值传递,只是不一定能达到想要的效果而已。用值传递还是址传递,根据你的实际需要来定。
f函数中:
y是值传递,所以main函数中的y值不变
x是址传递,f中从操作对x产生影响,x的值发生改变
f(4,&2)
y=y+*x=4+2=6;
*x=*x+y=2+6=8;
main函数中的x=8,y=4,最后显示的结果是8 4
要在后面写
return 才能传递值,比如
int f里的最后写return y;
就能传递y的值
#include<stdio.h>
int f( int y,int *x)
{ y=y+*x;
*x=*x+y;
return y;
}
void main( )
{
int x=2,y=4;
int z=f(y,&x);
printf("%d %d %d\n",x,y,z);
}
取返回值