lzth.net
当前位置:首页 >> voiD F(int y,int*x) {y=y+*x; *x=*x+y;} voiD mAin( >>

voiD F(int y,int*x) {y=y+*x; *x=*x+y;} voiD mAin(

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

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 答案豆 提问人:00****60 您可能感兴趣

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

一开始a=3,b=5调用fun函数void fun int*x,int *y{*x+=*y;//a=a+b=3+5=8,这时a=8 *y+=*x;//b=b+a=8+5=13 这时b=13由于传指针会改变a,b的值,就会出现如下结果

不使用中间变量的两变量交换.两变量交换通常用中间变量,伪代码写作:swap(x, y){ x = t; x = y; y = t;}我们可以通过三次异或运算完成变量的交换,而不使用中间变量,即:x = x xor y;y = y xor x;x = x xor y;xor运算满足交换律和结合律,上面的步骤可写为下面的等式y' = y xor (x xor y) = y xor y xor x = 0 xor x = x x' = (x xor y) xor (y xor (x xor y)) = x xor y xor x = 0 xor y = y 经过运算后y'(y的新值)是x,x'是y,完成了交换

看你的意思是要交换两个整数,但你的函数是按值传递的,是不会真正交换的,应该改成按引用传递,如下:void swip(int &a,int &b) { int t=0; t=a; a=b; b=t; } void main() { int x=0,y=0; cin>>x>>y; swip(x,y); cout<<"交换后的结果 x="<<x<<'\t' <<"y="<<y<<endl } 你的串号我已经记下,采纳后我会帮你制作

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com