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

C语言函数调用与参数传递剖析摘要:在介绍函数调用有关概念的基础上,通过例证的方法总结了函数调用过程中参数传递的方式及特点,可以更好的帮助学生理解和学习有关函数问题。关键词:函数调用实际参数形式参数参数传递中图分类号:tp312.1文献标识码:a文章编号:1007-9416(2012)02-0144-02函数是c语言中的基本组成单位,一个较大的c程序一般可分为若干个程序模块,实现某一特定功能的模块主要由函数来完成。所以,学习c语言程序设计要善于利用函数,一来可以减少重复编写程序段的工作量,二来可以方便的实现模块化程序设计。但是笔者在实际的教学过程中发现,学生在学习函数这部分知识时显的比较吃力。因为在具体使用函数时,要涉及到函数参数传递问题,而参数类型多种多样,使学生对函数问题产生了很多疑惑,根据教学实际,笔者对函数调用与参数传递问题进行了总结,以便大家对函数问题的理解。1、主调函数与被调函数计算机在执行c程序时总是从main函数开始,如果遇到要调用某个函数,则主函数称为主调函数,被调用者称为被调函数。一个c程序可由一个main函数和若干个其他函数构成,main函数用来解决整个问题,它调用解决小问题的其他函数,其他函数也可以相互调用。调用者就是主调函数,被调者就是被调函数,应当注意,main函数只能由系统调用。2、实际参数与形式参数在调用有参函数时,主调函数和被调函数之间有数据传递关系。在主调函数中进行函数调用时,函数名后面括弧中的参数称为实际参数,简称实参。在定义函数时函数名后面括弧中的变量名就是形式参数,简称形参。即实参出现在函数调用中,形参出现在函数定义中。主调函数通过函数调用将实参中的数据传递给被调函数的形参,从而实现函数间的数据传递。另外实参与形参进行数据传递时,系统要求实参与形参在数量、类型、顺序应严格保持一致,这一点在使用上要特别注意。3、变量存储类型与作用域主调函数和被调函数数据传递往往要通过变量进行,不同的变量类型影响数据的处理结果。c语言中变量按存储时分配的空间不同可以分为自动变量,寄存器变量,静态变量和外部变量。按变量的生命周期可以分为局部变量和全局变量,局部变量是在一个函数内部定义的变量,在存储器的动态存储区进行分配空间,作用域只在本函数内部有效,比如在主函数里定义的自动变量,寄存器变量,函数中的形式参数等都属于局部变量,在函数调用时,系统才为其分配存储空间,函数调用结束后,空间释放。而对于静态型局部变量是程序编译时由系统在存储器的静态存储区为其分配存储空间,函数调用结束后,空间不释放,其值要保留到程序退出。全局变量是在程序整个运行期间都要占用内存,所以它是全程有效,贯穿于主调函数与被调函数全过程,其值也要保留到程序退出为止。4、参数传递的本质与属性函数参数传递的过程,本质上是一种赋值过程即值传递过程,在调用函数之前,函数的每个实际参数将被复制,复制的值代替对应的形式参数。所以形参实际上得到的不是实参本身,而是实参的值或者实参所代表的值。因此,如果一个变量传递给一个函数,这个变量在调用环境中所存储的值并不会被函数修改,所以形参的值不会反过来影响实参,即实参与形参值传递是单向性的。这两个问题是学习和理解函数参数传递的根本,很多学习c语言的人对这两个问题不是很理解,下面举例说明函数调用时参数传递过程。4.1数值传递当变量为普通变量时,函数实参可以是自动局部变量,静态局部变量,数组元素,寄存器变量,结构体变量,结构体变量成员,常量等形式,函数形参为对应类型的变量,调用函数时,由系统给形参分配存储单元,存放从实参复制过来的数值。函数调用结束后,形参存储单元释放。例题1:#includevoidfunc1(intx){++x;printf(“%d”,x);}intmain(){intn=10;func1(n);printf(“%d”,n);return0;}例题1中main函数调用func1函数时,把实参n的值10(注意不是n)传给了形参x,x在func1函数中进行增1运算,这时x的值发生了改变,但该值不能返回到实参n中,因为x是func1函数内部定义的变量,属于局部变量,调用函数时,系统为x变量在存储器的动态存储区分配...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?