C的形参和实参的关系
来源:互联网 发布:mac微信语音导出软件 编辑:程序博客网 时间:2024/05/01 20:59
形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。
而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。要想改变函数外部定义的变量,必须将此变量的地址作为参数传递给参数,然后在函数内修改这个地址内的数据的值,这样的修改才有效.
举下面题目为例子
void fun(int x, int y)
{
int temp = 0;
if(x < y)
{
temp = x ;
x = y ;
y = temp;
}
}
main()
{
int a = 4, b = 3, c = 5;
fun(a, b);
fun(a,c);
fun(b,c);
printf(“%d, %d, %d”, a, b, c);
}
A、3, 4, 5
B、5, 3, 4
C、4, 3, 5
D、5, 4, 3
========================================
答案是C
一看题目,就一步一步计算,但最后a, b, c的值都没变,因为它们是实参,要想改变实参的值,必须把实参的地址传递给形参,这样才能改变实参的值.
总结如下
1、直接用变量传参一般是不能传递的。因为变量在传递中是两个等值的不同变量,两者互不影响。
2、如果是指针形参p,实参q,而且在被调函数中是对*p做的修改,那这时候这种修改可以传递。因为这时候是对p q指向的内存的直接修改,这种修改可以保存,从而传递出来。
3、对数组形参做的修改也可以传递。数组名是一个常指针。
- C的形参和实参的关系
- c语言中形参和实参的关系
- 关于函数形参和实参关系的理解
- 实参与形参的传递关系
- C语言形参和实参的陷阱
- C语言的形参和实参个数不一致问题
- 8.3 C语言函数的形参和实参
- C语言形参和实参的收录
- c++--实参和形参
- 函数的形参与实参的关系
- 关于function的实参与形参关系
- arm编程,关于函数调用形参实参在通用寄存器和栈帧里的对应关系。用汇编透视c语法操作
- java 实参和形参的区别
- 形参和实参的区别
- Javascript的形参和实参
- 形参和实参的区别
- 形参和实参的区别
- 函数的形参和实参
- java.lang.NoClassDefFoundError的几种原因与解决方法
- 异常总结,持续更新
- ContextLoaderListener(1)---WebApplicationContext创建过程
- 实习整理(十六)
- spinner的使用
- C的形参和实参的关系
- selenium自动化测试实现对网站的登陆(使用java编写)
- Ring实现原理剖析
- 如何优化 Android Studio 启动、编译和运行速度?
- Animation
- From scikit-learn to Spark ML
- jhat 应用
- 应用中添加QQ群(android、iOS、网页、二维码)
- dp-编辑距离HLG