1个回答
展开全部
你这题就是用了地址传递的,调用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的存储地址里面的东西改了再打印肯定就是改变了的值了 。
*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的存储地址里面的东西改了再打印肯定就是改变了的值了 。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询