发布网友 发布时间: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 不应该是同一级别!