C语言值拷贝传递机制

当参数是常量,变量,或表达式时,传递的数据就是这些数据对象所具有的内容,这种方式称为数值参数传递方式(简称传值方式)。如果函数调用时所传递的实参是数据对象在内存中的存储单元的首地址值,这种方式称为地址值参数传递方式(简称传地址方式)。数组参数和指针参数使用的就是地址值传递调用方式。

无论函数调用时传递的是数值还是地址值,函数调用的执行过程都可以分解为下面四个步骤:

1)首先计算实参的值。实参可能是常量,表达式等,所以计算可能涉及运算符和函数,但所有计算过程都将在此次函数调用之前完成。

2)主调函数调用被调函数,系统为被调函数中的形参和局部变量分配存储空间(即创建这些变量);如果是有參函数调用则进行参数传递,主调函数将实参值传递(复制)给被调函数的形参。

3)程序执行的控制流程转移到被调函数中,通过对形参的操作实现对外部数据的引用和加工,执行函数定义所描述的功能。

4)函数调用结束,程序执行的控制流程以及被调函数的执行结果(加工后的数据)通过return语句返回到主调函数中的调用点,系统释放被调函数中的形参和局部变量所占用的存储空间。而主调函数在获得返回值并替换到调用位置后,主调函数将继续往下执行。

猜你喜欢

转载自www.cnblogs.com/wzyuan/p/9906332.html