在C语言中,函数的形参与实参之间的值传递是什么意思?函数调用时如主函数中为swap(a,b),而从函数为

swap(*x,*y),为什么主函数不能用swap(*a,*b)呢?... swap(*x,*y),为什么主函数不能用swap(*a,*b)呢? 展开
 我来答
爱夜009
推荐于2016-08-10 · TA获得超过191个赞
知道小有建树答主
回答量:309
采纳率:0%
帮助的人:202万
展开全部

以int 型举例


void Swap(int *a, int * b)
{
    int temp = *a;
   *a = *b;
 *b = temp;
}
void Swap1(int a, int b)
{
    int temp = a;
   a =b;
    b = temp;
 
}

Swap(int *, int *);称之为实参 实际传递的是 a和 b 的地址 啊 , 在调用a与b 的值(*a)使用的是原来的数 下面的  x,y; a , b 的值是x与y 的内存地址
swap1(int ,int); 称之为形参 实际传递的是 a 和b 的值,这里的a和b 与xy没关系, 只是x与y 的一个副本。

int swap_test()
{
    int x,int y;
    x = 3; y = 5;
    
    Swap(&x,&y);
    //此时x = 5; y = 3;
    Swap1(x,y);
     //此时x = 5; y = 3;
     
     return 1;
}
八千汉字
2014-09-23 · TA获得超过189个赞
知道小有建树答主
回答量:312
采纳率:100%
帮助的人:185万
展开全部
每个函数 会给变量 重新做一个副本 比如
int a,b;
void wap(int a,int b); 可以用 wap( & a,& b) 取 a,b 的地址 传递 这样不会创建新变量
{
......
}

void wap (int a,int b) // 这里a,b 的地址和全局main的 a,b地址不同 只是一个副本 修改是不会影响主函数
{
a=a+b;
b = a - b;
a = a - b;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式