C语言值拷贝传递机制
2024-08-31 21:22:18
当参数是常量,变量,或表达式时,传递的数据就是这些数据对象所具有的内容,这种方式称为数值参数传递方式(简称传值方式)。如果函数调用时所传递的实参是数据对象在内存中的存储单元的首地址值,这种方式称为地址值参数传递方式(简称传地址方式)。数组参数和指针参数使用的就是地址值传递调用方式。
无论函数调用时传递的是数值还是地址值,函数调用的执行过程都可以分解为下面四个步骤:
1)首先计算实参的值。实参可能是常量,表达式等,所以计算可能涉及运算符和函数,但所有计算过程都将在此次函数调用之前完成。
2)主调函数调用被调函数,系统为被调函数中的形参和局部变量分配存储空间(即创建这些变量);如果是有參函数调用则进行参数传递,主调函数将实参值传递(复制)给被调函数的形参。
3)程序执行的控制流程转移到被调函数中,通过对形参的操作实现对外部数据的引用和加工,执行函数定义所描述的功能。
4)函数调用结束,程序执行的控制流程以及被调函数的执行结果(加工后的数据)通过return语句返回到主调函数中的调用点,系统释放被调函数中的形参和局部变量所占用的存储空间。而主调函数在获得返回值并替换到调用位置后,主调函数将继续往下执行。
最新文章
- redis并发问题
- 腾讯的一道JavaScript面试题
- Ajax PHP项目实战
- 一起Polyfill系列:让Date识别ISO 8601日期时间格式
- POJ 2253 Frogger
- ios学习:页面跳转(present)
- web项目环境搭建(1):建立一个maven项目
- 【转】GitHub问题之恢复本地被删除的文件
- 【js数据结构】栈解决佩兹糖果盒问题
- Java基础总结--面向对象2
- iOS下OpenCV开发用OC还是Swift
- 算法工程师:双非渣硕是如何获得百度、京东双SP
- 记录一次大量CLOSE_WAIT的情况
- python_练习04
- 2018蓝桥杯 省赛D题(测试次数)
- 【你不一定知晓的】C#取消异步操作
- Spark学习之路 (十七)Spark分区
- centos 6.5 gdb 7.10安装make[5]: *** [install-bfdincludeHEADERS] Error 1解决
- Shell #*/ 和 %/*
- PHP代码实现2 [从变量和数据的角度] 1
热门文章
- java 多线程系列基础篇(六)之线程让步
- mysql中表触发器的简单使用
- (修改)oracle11g监听多台主机配置,用pl/sql连接操作多个数据库详解
- strstr()查找函数,strchr(),strrchr(),stristr()/strpos(),strrpos()查找字符串位置
- 算法Sedgewick第四版-第1章基础-007一用两个栈实现简单的编译器
- js实现无刷新上传
- string为什么是final?源码分析
- SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 《Maven实战》笔记-8-构建部署Web项目
- 如何使用Visual Studio 2010在数据库中生成随机测试数据