c语言函数调用与参数传递剖析

c语言函数调用与参数传递剖析

ID:14604295

大小:39.50 KB

页数:8页

时间:2018-07-29

c语言函数调用与参数传递剖析_第1页
c语言函数调用与参数传递剖析_第2页
c语言函数调用与参数传递剖析_第3页
c语言函数调用与参数传递剖析_第4页
c语言函数调用与参数传递剖析_第5页
资源描述:

《c语言函数调用与参数传递剖析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C语言函数调用与参数传递剖析摘要:在介绍函数调用有关概念的基础上,通过例证的方法总结了函数调用过程中参数传递的方式及特点,可以更好的帮助学生理解和学习有关函数问题。关键词:函数调用实际参数形式参数参数传递中图分类号:tp312.1文献标识码:aC语言函数调用与参数传递剖析摘要:在介绍函数调用有关概念的基础上,通过例证的方法总结了函数调用过程中参数传递的方式及特点,可以更好的帮助学生理解和学习有关函数问题。关键词:函数调用实际参数形式参数参数传递中图分类号:tp312.1文献标识码:a文章编号:1007-9416(2012)02-0144-02函数是c语言中的基本组成单位,一个较大

2、的c程序一般可分为若干个程序模块,实现某一特定功能的模块主要由函数来完成。所以,学习c语言程序设计要善于利用函数,一来可以减少重复编写程序段的工作量,二来可以方便的实现模块化程序设计。但是笔者在实际的教学过程中发现,学生在学习函数这部分知识时显的比较吃力。因为在具体使用函数时,要涉及到函数参数传递问题,而参数类型多种多样,使学生对函数问题产生了很多疑惑,根据教学实际,笔者对函数调用与参数传递问题进行了总结,以便大家对函数问题的理解。1、主调函数与被调函数计算机在执行c程序时总是从main函数开始,如果遇到要调用某个函数,则主函数称为主调函数,被调用者称为被调函数。一个c程序可由一

3、个main函数和若干个其他函数构成,main函数用来解决整个问题,它调用解决小问题的其他函数,其他函数也可以相互调用。调用者就是主调函数,被调者就是被调函数,应当注意,main函数只能由系统调用。2、实际参数与形式参数在调用有参函数时,主调函数和被调函数之间有数据传递关系。在主调函数中进行函数调用时,函数名后面括弧中的参数称为实际参数,简称实参。在定义函数时函数名后面括弧中的变量名就是形式参数,简称形参。即实参出现在函数调用中,形参出现在函数定义中。主调函数通过函数调用将实参中的数据传递给被调函数的形参,从而实现函数间的数据传递。另外实参与形参进行数据传递时,系统要求实参与形参在

4、数量、类型、顺序应严格保持一致,这一点在使用上要特别注意。3、变量存储类型与作用域主调函数和被调函数数据传递往往要通过变量进行,不同的变量类型影响数据的处理结果。c语言中变量按存储时分配的空间不同可以分为自动变量,寄存器变量,静态变量和外部变量。按变量的生命周期可以分为局部变量和全局变量,局部变量是在一个函数内部定义的变量,在存储器的动态存储区进行分配空间,作用域只在本函数内部有效,比如在主函数里定义的自动变量,寄存器变量,函数中的形式参数等都属于局部变量,在函数调用时,系统才为其分配存储空间,函数调用结束后,空间释放。而对于静态型局部变量是程序编译时由系统在存储器的静态存储区为

5、其分配存储空间,函数调用结束后,空间不释放,其值要保留到程序退出。全局变量是在程序整个运行期间都要占用内存,所以它是全程有效,贯穿于主调函数与被调函数全过程,其值也要保留到程序退出为止。4、参数传递的本质与属性函数参数传递的过程,本质上是一种赋值过程即值传递过程,在调用函数之前,函数的每个实际参数将被复制,复制的值代替对应的形式参数。所以形参实际上得到的不是实参本身,而是实参的值或者实参所代表的值。因此,如果一个变量传递给一个函数,这个变量在调用环境中所存储的值并不会被函数修改,所以形参的值不会反过来影响实参,即实参与形参值传递是单向性的。这两个问题是学习和理解函数参数传递的根本

6、,很多学习c语言的人对这两个问题不是很理解,下面举例说明函数调用时参数传递过程。4.1数值传递当变量为普通变量时,函数实参可以是自动局部变量,静态局部变量,数组元素,寄存器变量,结构体变量,结构体变量成员,常量等形式,函数形参为对应类型的变量,调用函数时,由系统给形参分配存储单元,存放从实参复制过来的数值。函数调用结束后,形参存储单元释放。例题1:#includevoidfunc1(intx){++x;printf(“%d”,x);}intmain(){intn=10;func1(n);printf(“%d”,n);return0;}例题1中main函数调用func1函数时,把实

7、参n的值10(注意不是n)传给了形参x,x在func1函数中进行增1运算,这时x的值发生了改变,但该值不能返回到实参n中,因为x是func1函数内部定义的变量,属于局部变量,调用函数时,系统为x变量在存储器的动态存储区分配存储空间,函数调用结束后,x变量被释放,数值被清,故n值不变,体现了传值的单向性。4.2地址值传递地址值传递是指实参与形参之间传递的数据是地址,与数值传递不同的是,地址值传递的是形参接收实参地址的复制值,而不是实参值本身。另外,地址值传递方式中系统不为形式参数变

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。