C函数调用中参数传递的深入分析

来源 :高校教育研究 | 被引量 : 0次 | 上传用户:qq165247254
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】函数是C语言程序设计课程教学的重点和难点,特别是函数调用中参数传递是许多学生难于理解和掌握的知识点。本文结合实例,采用图示方法,深入分析了C函数调用中参数传递的两种方式,并就两种方式下参数的正确使用和注意事项进行了说明,对于理解和掌握C函数调用中的参数传递很有帮助。
  【关键词】C语言 函数定义 函数调用 参数传递
  【中图分类号】TP312 【文献标识码】A 【文章编号】1009-9646(2008)09(b)-0151-02
  
  1 引言
  设计复杂程序,通常采用模块化方法,将大程序分为若干个模块,每个模块实现某个特定功能。几乎所有高级程序设计语言都有子程序概念,用子程序来实现模块的功能。C程序结构非常符合模块化的设计思想,用C函数实现各功能模块,通过函数调用实现复杂程序的全部功能。这就要求C程序员必须掌握C函数的定义和调用形式,特别对函数调用中参数传递有深入理解。本文结合实例,采用图示方法,深入分析C函数调用中参数传递的两种方式,即“传值”和“传址”,对理解和掌握参数传递很有帮助。
  
  2C函数调用参数传递的深入分析
  2.1 “传值”方式的深入分析
  “传值”是C默认的参数传递方式,对应的实参和形参是两个独立的实体,占用不同的内存单元,调用函数时,系统把实参值复制一份给形参,便断开二者的联系,形参值的改变对实参无影响。因此,“传值”是单向的,只能由实参传递给形参。下面C函数调用采用“传值”方式,分析能否实现两数互换。
  
  执行程序,运行结果:a=10,b=20,并未实现a、b互换。分析参数传递过程如图1所示,由于“传值”方式的实参和形参占用不同的内存单元,当调用函数Swap时,系统把实参a、b的值复制一份给形参x和y,便断开二者的联系,函数Swap交换x与y的值,并不影响实参a和b,最终未能实现a、b互换。
  
  说明:①形参为“传值”方式的简单变量,实参可以是同类型的常量、变量、数组元素或表达式。②形参为“传址”方式,实参是常量或表达式,“传址”无效,相当于“传值”方式。
  2.2 “传址”方式的深入分析
  “传址”是C语言重要的参数传递方式,应用广泛。函数调用时,系统将实参的地址传递给形参,实参与形参占用不同的存储单元,传递方式是双向的,形参值的改变将影响实参值。下面将讨论“传址”方式的几种情况。
  数组名作函数参数。形参与实参均用数组名的情况属“传址”方式。下面C函数调用采用“传址”方式,分析能否实现两数组对应元素值的互换。
  
  执行程序,运行结果:10 1 20 2,实现了a、b两数组值的互换。分析参数传递过程如图2所示,由于“传址”方式的实参和形参占用同一段内存单元,当调用函数Swap时,系统把实参数组a、b的首地址分别传递给形参数组x和y,使得x与a、y与b分属同一段存储单元; 当执行函数Swap时,交换x与y等同于交换a与b;调用结束,返回主调函数,实现a、b两数组对应元素互换。
  
  指针作函数参数。当形参为指针变量时,对应的实参可以是指针变量、数组名或存储单元地址,这种情况属于“传址”方式。分析下面程序能否真正实现两数组对应数据的互换功能。
  
  执行程序,运行结果:10 1 20 2,实现了a、b两数组对应元素互换。参数传递过程与图2相同,因为,在C语言系统中,数组就是采用指针来实现。
  2.2.3 结构体作函数参数。结构体作函数参数,有两种情况:①ANSI C新标准允许用结构体变量作函数参数,相当“传值”方式。②指向结构体变量的指针作函数参数,相当“传址”方式。下面程序采用第②种方式,实现两个结构体变量中对应元素值的互换。其参数传递过程与图2相同。
  
  2.2.4 指向函数的指针变量作函数参数。函数在编译时被分配一个入口地址,称为函数指针。可以利用一个指针变量指向函数,并通过该指针变量调用此函数。函数指针变量常用的用途之一就是把指向函数的指针变量作为参数,以实现函数地址的传递,也就是将函数名传给形参,只要在每次调用函数时给出不同的函数名作为实参,即可通过同一个接口函数调用不同的函数。这种方法符合结构化方法的原则,在程序设计中经常使用。举例:设计一个接口函数process,每次调用实现不同的功能。
  
  分析程序的执行,在main函数中每次调用process接口函数时,除了将a和b作为实参传给process函数的形参x、y外,还将函数名max、min或add作为实参将其入口地址传送给process函数中的指针变量fun,然后通过fun调用相应的函数。程序执行过程中变量fun变化示意图如下图3。从本例看出,函数指针变量的使用增加了函数使用的灵活性,可以设计编写一个通用的函数来实现各种专用的功能。
  
  
  3 结束语
  在C程序设计中,函数使得程序简练、高效,便于程序的调试和维护,也是利用C开发应用系统的基础,同时,函数又是C语言教学的重点和难点,学生很难理解和掌握,特别是C函数调用的参数传递机制和正确使用。本文结合实例,采用图示方法,从多方面深入分析了C函数调用过程中参数传递的两种方式。实践证明,图示方法对学生正确理解和掌握C函数调用中的参数传递很有帮助。
  
  参考文献
  [1] 谭浩强.C程序设计(第二版).北京:清华大学出版社.1999,210-216.
  [2] 杨路明.C语言程序设计教材(第二版).北京:北京邮件大学出版社.2005,180-183.
  [3] 李文兵.C应用程序设计技术.北京:清华大学出版社.1994,94-100.
  [4] 王小華.C++ BUILDER编程技巧、经验与实例.北京:人民邮电出版社.2004,156-158.
  
  注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
其他文献
【摘要】冰雪雕塑艺术课程是一门具有地方特色的全新课程,在教学中有效运用案例教学和实践教学法能使学生充分掌握冰雪雕塑艺术的规律与原理,提高学生的创新能力和思辨能力。   【关键词】应用型高校 冰雪雕塑艺术 案例教学法 实践教学法   【中图分类号】C42 【文献标识码】A 【文章编号】1009-9646(2008)09(b)-0062-02      1 引言   当今,世界上拥有冰雪资源的各个国家
期刊
【摘要】随着经济的发展和国家科教兴国战略的实施,校园网络建设已逐步成为学校的基础建设项目,高职高专院校为了提高自己的管理水平,跟上时代的步伐,也都在着手数字化校园的建设。本文谨以重庆工程职业技术学院国家示范建设项目之“公共服务平台”数字化校园建设实践为例,对高职院校数字化校园建设中IP地址的规划与管理问题进行探讨。   【关键词】数字化校园 校园网 IP 规划 管理   【中图分类号】TP393.
期刊
【摘要】考试是教学工作中一个重要环节。通过考试既能了解学生的学习效果,反映教师的教学效果,又能为教学管理提供信息和依据,为改进教学工作提供反馈信息,促进试题库建设等。考试是否可靠,能否有效,试卷(试题库)质量至关重要。因此,对试卷质量的检测与分析,是教学管理不可忽视的课题。本文根据教育测量学的有关理论,运用数理统计方法对试卷质量进行分析。   【关键词】试卷质量 统计分析 教学管理   【中图分类
期刊
【摘要】PBL即以问题为导向的教学方法是目前国际上较流行的一种教学方法,它强调以学生为主体,教师为主导。PBL在我国的具体教学实践中与我国的教育现实如大班制教学、师资培养模式等有诸多的不协调,受条件和师资的限制,未能建立更科学的评估方案,因此临床医学生面对PBL这一新的教学方法,往往都会有抵触情绪。我们经过研究,根据我国内地医学生的学习特点,在认真领会PBL实质的基础上,建立了临床医学生PBL教学
期刊
【摘要】Visual Foxpro(VFP)程序设计是高校非计算机专业的一门重要程序设计课程,对人文社科、财经类、管理类等学生有较大的实用性。本文根据农科院校的学生特点和课程特点,从教学观念、教学方法、教学实践等方面进行了全面探索与改革实践,为Visual Foxpro课程教学提供了有益的思路和建议。   【关键词】Visual Foxpro 程序设计 教学方法 教学内容   【中图分类号】G62
期刊
【摘要】利用80C51系列单片机、HD7279A键盘管理芯片、DS18B20温度传感器以及128×64液晶显示模块设计了一个具有人机交互功能的温度控制系统,在20℃至+70℃范围内可以较为精确地把环境温度控制在设定的范围之内,控制精度为±0.5℃;当温度超出设定的范围时,系统具有自动控制和报警功能。该设计可用于恒温箱、烘箱等系统的温度控制,具有简洁、实用的特点。   【关键词】温度控制 单片机 D
期刊
【摘要】教师评测是每一个学校不可缺少内容,它的评测结果对于学校来说是至关重要的,它直接关系到学校教学质量的好坏,能为学校领导提供管理教学质量、提高素质教育水平的有力信息。教育质量历来是学校各项工作中的重点,而教学质量则是重中之重。高职院校由于在专业结构、学生规模、师资队伍及培养目标上的调整比较大,教学质量的控制和提升就显得尤为重要。因此,就目前个高职院校普遍建立的教师教学质量测评体系进行再认识、再
期刊
【摘要】分层教学是根据学生之间的差异,有针对性地设计教学内容、教学方案,实施不同层次的教学。高职数学课程的分层教学在全面了解学生的基本知识和基本能力的基础上,合理地进行了动态的分层目标、分层作业、分层评价和分层小结的教学工作,达到整体素质提高的目的。   【关键词】高职 数学教学 分层教学   【中图分类号】G623.5 【文献标识码】A 【文章编号】1009-9646(2008)09(b)-01
期刊
【摘要】英美文学课程是我国高校英语专业的主干课程之一,它不仅能培养学生的阅读欣赏能力、促进语言能力的提高,同时能够卓有成效地培养学生的人文素质,从而促进学生综合素质的提高。其重要意义不仅仅限于对英语专业学生的培养,对提高全体大学生的人文素质也起着不可小视的作用。以麻省理工学院为例,美国理工科院校文学课程设置具有如下特点:课程形式丰富多样、涵盖面广、受众数量多。从借鉴的角度出发,结合我国实际,应该从
期刊
【摘要】基于ASP的学生宿舍管理系统的开发,能够大大方便后勤管理部门的宿舍管理工作,实现无纸化办公,既简化了日常重复操作的工作量,又有利于数据资料的备份,提高了工作效率。本系统采用先进的B/S(Browser/Server,浏览器/服务器)模式的三层体系结构,以ASP技术为核心,开发出交互式的动态网页,满足校园网络化的要求。   【关键词】ASP B/S结构 无纸化办公 动态网页技术   【中图分
期刊