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()函数中只改变...

在c语言中,被调函数不能直接修改主调函数中变量的值,而要让函数可以修改主调函数的变量,则被调函数需要将参数声明为指针类型,调用者需向被调用的函数传递变量的地址,所以,f()中x是声明为指针类型,调用的时候也是给x传递地址,所x能修改主...

因为x传的是地址,在函数f中它的值会被改变,而y传的只是普通变量,所以值不会发生变化

先执行y=那句,得y是6,然后是*x那句,得8

x=5; y=2; z=0; 【x=5,y=2,z=0】 p(&x,y);即p(&x,2);函数p中x指向main函数中的变量x,参数变量y=2 --*x;【*x=4,main函数中x的值被减1改成了4】 y++;【p函数的参数y加1=3】 z=*x+y;【p函数中没有定义z,所以使用全局变量z,x和y仍然是p函数参数...

很简单,你只是把y,z的值赋给形参而已,互换也只是两个形参之间进行,与实参一点关系没有,要觉得难理解的话把程序中几个变量在内存中的存储情况画出来就一目了然了你要实现互换,可以用指针,也可以直接在调用的函数中打印,或者弄些返回值什么的

//1、定义了两个变量 int a=2,b=2; //这里a为2,b为2 //2、调用test函数,a为引用传递,b为至传递 test(&a,b); //执行后main中a为5,b为2 //3、打印 //打印结果为"a=5,b=2" 解释一下 步骤2中a为引用传递,他给test函数传了一个内存的地址,a这个...

31 你定义的函数fun没有返回值,而且参数不是引用型的,所以形参的改变不会影响实参,即a的值,输出的是31

test(&a,&b);调用test函数voidtest(int*x,int*y)此时*x=a=3;*y=b=4{*x=*y;*y=*x-2;}*x=*y=4;*y=*x-2=2传回主函数则a=4,b=2

考查的是参数传递,及指针应用。 fun(&y,&x); 参数为地址传送,void fun(int *x,int *y)接收的是(x=&y,y=&x) 输出是y x也就是2 1 将地址赋的值更改为*x=3,*y=4;相当于主函数的y=3,x=4. 返回主函数输出的是4 3 故最后输出结假果:2143 答案是A

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