为什么有的函数里可以进行值传递

#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的值

img

#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);
}

取返回值