C语言函数参数的传递的学习
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前都有一个取地址符号“&”,这里的形参为引用类型,引用与实参进行绑定,作为实参的别名。故传入实参后,函数对引用的操作,就是对实参的操作,所以实参会发生改变。
相关推荐
penkgao 2020-10-13
penkgao 2020-06-25
Biao 2020-06-17
yunfeitian 2020-06-13
AaronPlay 2020-06-13
chensen 2020-11-14
拉斯厄尔高福 2020-11-04
杜倩 2020-10-29
拉斯厄尔高福 2020-10-19
嵌入式资讯精选 2020-10-15
zhaochen00 2020-10-13
yiyilanmei 2020-10-05
wanshiyingg 2020-09-29
Mars的自语 2020-09-27
shenwenjie 2020-09-24
一个逗逗 2020-09-22
flycony 2020-09-13
zhaochen00 2020-08-20
Biao 2020-08-20