...void fun(int*a,int*b) {int*c; c=a;a=b;b=c;} main() {int x=...

发布网友 发布时间:2024-10-23 21:21

我来回答

2个回答

热心网友 时间:3小时前

这个程序的结果是:3,5,3,5
我帮你“缕缕”吧。调用fun函数时,是将p和q的值(x和y的地址)传给了a和b。注意,这里p的值和q的值传递过去了,p和q的值会变吗?不会。所以p和q仍然分别指向x和y。再回到fun函数中,可以看出,a和b的值(x和y的地址)是交换了,也即是说a原本指向x,现在指向了y,对应的b改为指向x。但这只能说a和b间有变化。会影响到x和y吗?也不会。所以fun函数其实对x,y,p,q没有产生任何的影响,当然结果就应该是3,5,3,5了。希望你看过之后可以理解清楚。

热心网友 时间:3小时前

p和q是指针,而fun函数里面作为桥梁的不应该是指针,如要想实现应该传递p q的地址。
就像:fun(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
}

void main()
{
int x = 1,y = 2;
fun(x,y);

printf("%d%d",x,y);
}
和这个程序的错误类似!
上面的程序应改为:fun(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}

void main()
{
int x = 1,y = 2;
fun(&x,&y);

printf("%d%d",x,y);
}
说白了就是temp a b 不应该是同一级别!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com