打印

[提问] 求助C中址传递和值传递的问题

求助C中址传递和值传递的问题

1) : sawp( int p1, int p2)
{int t;
t=p1;p1=p2;p2=t;
}
main()
{ int a,b;
scanf("%d,%d\n",&a,&b);
if(a<b) swap(a,b);
printf("%d,%d\n",a,b);
}
2);
sawp( int *p1,int *p2)
{int t;
t=*p1;*p1=*p2;*p2=t;
}
main()
{ int a,b;
int *w1, *w2;
scanf("%d,%d\n",&a,&b);
w1=&a; w2=&b;
if(a<b) swap(w1,w2);
printf("%d,%d\n",a,b);
}
输入5,9 <cr>后,第一个输出5,9
第二个输出9,5
w1,w2的指向没发生变化,子函数都是值的交换,为什么会不同,指点一下。

TOP

这个应该问老师,你先理解指针吧。
你可以这样理解:
值传递是将变量的植先复制到另一个地方,然后再在接收到传递的函数中对这些值进行操作所以如果在函数中改变这些传递过来的值,所以原来变量的值将不会改变
而地址传递是把变量的地址传递到函数中,这样的话改变地址中的值的话,原来变量的值当然也随之改变.
多看看书上的介绍就知道了:handshake
学了6年了,还是初学者。。。。。。。。

TOP

顶楼上
可以回去再看看指针是什么东西
*干死小日本*
提示: 作者被禁止或删除 内容自动屏蔽

TOP

Processed in 0.052311 second(s), 5 queries, Gzip enabled