c语言过程解答

求解... 求解 展开
 我来答
jxhisok
2013-06-17 · TA获得超过293个赞
知道小有建树答主
回答量:184
采纳率:0%
帮助的人:211万
展开全部
你这题就是用了地址传递的,调用void swap函数之后就把a,b的值给改变了:
*x=*x - *y 就是说把指针x所指向的地址中存储的值拿来参与计算且将结果保存在指针x所指向的地址中。*y=10,就是把指针y所指向的地址中的值重新赋值为10.这样,x,y的值就变成x=2,y=10
调用这个函数之后在主函数中a,b的值也随之改变了,也变成a=2,b=10.

下面和你说说C语言中关于函数参数的传递方式:

在C语言中,函数参数的传递是有两种的,一种是值传递,一种是地址传递,值传递改变不了原来的值,比如,一个函数
例一
void fun(int i)
{
i=2;
}
在主函数中有
void main(void)
{
int i=3;
fun(i);
printf("%d",i);
}
i的值还是显示的是3。就是因为这个fun函数改变不了i的值。。。i是通过值传递的,也就是说复制了i的值传递给fun函数的。
如果这样就可以改变的
例二;
void fun(int *i)
{
*i=2;
}
void main(void)
{
int i=3;
fun(&i);
printf("%d",i);
}
这个时候i的值就能改变了,因为调用i是直接把存储i的地址给fun函数了,这样i的存储地址里面的东西改了再打印肯定就是改变了的值了 。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式