{ printf("%d %d", *x, *y); *x=3; *y=4;}
4个回答
展开全部
注意函数参数传递方式,是传递的变量指针,不是值传递。
假设内存中有存储单元A和B,main()中的变量x和y分别保存在这两个存储单元中,即x->A,y->B。x=(A)=1,y=(B)=2
函数fun()的参数传递方式是传递存储单元的地址,因此在fun()函数中,是x->B,y->A,则*x=(B)=2,*y=(A)=1,当运行到*x=3;*y=4时,实际上是令(B)=3,(A)=4。
回到main()后,由于主程序中仍然是x->A,y->B的关系,所以此时x=4,y=3
这个问题主要是理解变量的作用域和指针。
假设内存中有存储单元A和B,main()中的变量x和y分别保存在这两个存储单元中,即x->A,y->B。x=(A)=1,y=(B)=2
函数fun()的参数传递方式是传递存储单元的地址,因此在fun()函数中,是x->B,y->A,则*x=(B)=2,*y=(A)=1,当运行到*x=3;*y=4时,实际上是令(B)=3,(A)=4。
回到main()后,由于主程序中仍然是x->A,y->B的关系,所以此时x=4,y=3
这个问题主要是理解变量的作用域和指针。
展开全部
考查的是参数传递,及指针应用。
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fun(&y,&x);
执行后,y=3,x=4
void
fun(int
*x,
int
*y)
//调用时是fun(&y,&x),先出入y,后传入x的
{
printf("%d
%d",
*x,
*y);
*x=3;
*y=4;}
//*x指向main中的y的地址,*y指向main中的x的地址
所以最后输出2
14
3
执行后,y=3,x=4
void
fun(int
*x,
int
*y)
//调用时是fun(&y,&x),先出入y,后传入x的
{
printf("%d
%d",
*x,
*y);
*x=3;
*y=4;}
//*x指向main中的y的地址,*y指向main中的x的地址
所以最后输出2
14
3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上一改就很明白了。
fun里的x,y只是形参,只与定义或者声明时的变量名匹配。
fun里的x,y只是形参,只与定义或者声明时的变量名匹配。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询