码迷,mamicode.com
首页 > 编程语言 > 详细

C语言函数参数的传递的学习

时间:2020-06-20 21:48:58      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:ref   注意   函数参数   https   分析   传递   amp   语言   href   

C语言函数参数的传递的学习


1.值传递

void Exchg1(int x, int y)
{
   int tmp;
   tmp = x;
   x = y;
   y = tmp;
   printf("x = %d, y = %d\n", x, y);
}
int main()
{
   int a = 4,b = 6;
   Exchg1(a, b);
   printf("a = %d, b = %d\n", a, b);
   return(0);
}

输出结果:
x=6,y=4
a=4,b=6
分析:a,b的值没有发生改变。 这里Exchg1()函数有个隐含操作,int x=a,y=b。故在函数里改变的是x,y的值,不改变ab。即改变了形参,没有改变实参。


2.地址传递

void Exchg2(int *px, int *py)
{
   int tmp = *px;
   *px = *py;
   *py = tmp;
   printf("*px = %d, *py = %d.\n", *px, *py);
}
int main()
{
   int a = 4;
   int b = 6;
   Exchg2(&a, &b);
   printf("a = %d, b = %d.\n", a, b);
   return(0);
}

输出结果:
*px = 6, *py = 4.
a = 6, b = 4.
分析:a,b的值发生改变。 这里Exchg2()函数有个隐含操作, x=(&a),y=(&b),注意这里x,y为指针类型。这里传入的是a,b的地址,函数里是对地址里面的值进行改变,故a,b的值改变。


3.引用传递

void Exchg3(int &x, int &y)
{
   int tmp = x;
   x = y;
   y = tmp;
   printf("x = %d,y = %d\n", x, y);
}
int main()
{
   int a = 4;
   int b = 6;
   Exchg3(a, b);
   printf("a = %d, b = %d\n", a, b);
   return(0);
}

输出结果:
x=6,y=4
a=6,b=4
分析:a,b的值发生改变。函数中x、y前都有一个取地址符号“&”,这里的形参为引用类型,引用与实参进行绑定,作为实参的别名。故传入实参后,函数对引用的操作,就是对实参的操作,所以实参会发生改变。

"学习原文"

C语言函数参数的传递的学习

标签:ref   注意   函数参数   https   分析   传递   amp   语言   href   

原文地址:https://www.cnblogs.com/wryy/p/13170268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!