作业帮 > 综合 > 作业

void f( int y,int *x) {y=y+*x; *x=*x+y;} main( ) { int x=2,y

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/06/13 03:18:13
void f( int y,int *x) {y=y+*x; *x=*x+y;} main( ) { int x=2,y=4; f(y,&x); printf("%d %d\n",x,y); }
为什么输出结果是8,4 .即为什么x取了返回值 而y没有
void f( int y,int *x) {y=y+*x; *x=*x+y;} main( ) { int x=2,y
在c语言中,被调函数不能直接修改主调函数中变量的值,而要让函数可以修改主调函数的变量,则被调函数需要将参数声明为指针类型,调用者需向被调用的函数传递变量的地址,所以,f()中x是声明为指针类型,调用的时候也是给x传递地址,所x能修改主函数中的值,而y传的是值,自然不能,这就是值传递和地址传递的区别,建议你多看看指针那章,
再问: 知道了 通过传送地址值,在被调用函数中直接改变调用函数的值 吧
再答: 是啊,地址传递就是这意思