www.fltk.net > #inCluDE<stDio.h> voiD F(int*x,int y) {*x=y+...

#inCluDE<stDio.h> voiD F(int*x,int y) {*x=y+...

有以下程序: include <stdio.h> 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); } 执行后的输出结果【 】. 请帮忙给出正确答案和分析,谢谢! 悬赏: 0 答案豆

a=3,b=2因为a传过去的是地址,形参和实参共用同一个内存空间,形参的改变会间接地改变实参,而b则传递的是值,值传递的时候,形参的改变不影响实参.

X是地址传递,子函数会修改X的内容;而Y是按值传递,子函数不会修改Y的值.结果自然是X=8.Y=4.要是还不懂,翻书去.

void f(int y, int *x) { y = y + *x; // 形参y,x和实参y,x存储地址不同,改变形参的值对实参没有影响. // y=y+x=6 *x = *x + y; // *x的值就是主函数里实参x的值 // *x=2+4=6 } void main() { int x = 2, y = 4; f(y, &x); // f()函数中只改变了x的值,没有改变y的值.也就是只有向函数传递某个值的指针才能改变这个值 printf("x=%d,y=%d\n", x, y); }// 运行结果x=8,y=4

#include int f(int x) { int y; if(x==0||x==1) return(3); else y=x*x-f(x-2); //递归调用,当x=3时,y=3*3-f(1),再次调用f,这时x为1,返回3给f(1),再执行y=3*3-3,因此y=6 return y; } main( ) { printf ("%d\n",f(3));//调用f这个函数,同时把3传过去 }

2#4p函数的 int *x得到main中 y的地址故p函数的 x指向 main的yp中 *x 和 main的y 占用的是同一段内存,p里 ++*x 就是main的y加1了p 的y 接收 main的y的值 p的y和main的y是两个不同的内存p 里 不管 p的y怎么变都不影响 main的y所以main里x不变还是2 y变为4

相关搜索:

网站地图

All rights reserved Powered by www.fltk.net

copyright ©right 2010-2021。
www.fltk.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com