C语言值传递、地址传递

您所在的位置:网站首页 函数的实参传递到形参有两种方式值传递和地址传递对吗 C语言值传递、地址传递

C语言值传递、地址传递

2024-02-19 15:50| 来源: 网络整理| 查看: 265

值传递和地址传递的区别是,值传递只有形参发生改变,实参没变。址传递实参变了

实参(实际参数):给出参数具体的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。

形参(形式参数):没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。

传递(参数):函数被调用时,实参的数据赋给形参的过程,执行函数的具体功能,现以交换a=3,b=8这两个数值的程序为例。

//关于值传递和地址传递的学习,以交换函数为例 #include void swap1(int x, int y); void swap2(int *m, int *n); int main() { int a = 3, b = 8; printf("调用函数前:实参a=%d 实参b=%d\n\n", a, b); swap1(a, b); printf("值传递调用函数后:实参a=%d 实参b=%d\n\n", a, b); swap2(&a, &b); printf("址传递调用函数后:实参a=%d 实参b=%d\n", a, b); return 0; } void swap1(int x, int y) { int temp; temp = x; x = y; y = temp; printf("值传递调用函数中:形参x=%d 形参y=%d\n", x, y); } void swap2(int *m, int *n) { int temp=*m; *m = *n; *n = temp; printf("址传递调用函数中:形参m=%d 形参n=%d\n", *m, *n); }

得出的结果如下

由此可见值传递只有形参发生改变,实参并没有改变。址传递中实参形参都发生了改变。

究其原因,是值传递实参形参在不同内存中,传递是单向的,即实参只能传递给形参,而形参传不回来给实参了。

而地址传递实参把变量的地址给了形参,实参和形参在同一内存中。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3