C语言值传递、地址传递 |
您所在的位置:网站首页 › 函数的实参传递到形参有两种方式值传递和地址传递对吗 › C语言值传递、地址传递 |
值传递和地址传递的区别是,值传递只有形参发生改变,实参没变。址传递实参变了 实参(实际参数):给出参数具体的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。 形参(形式参数):没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。 传递(参数):函数被调用时,实参的数据赋给形参的过程,执行函数的具体功能,现以交换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 |