C语言教学中函数参数传递问题探讨

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:w5423112
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:在一些C语言教材和参考资料中,常常把函数参数传递分为“数值传递”和“地址传递”两种方式,这种概念模糊的分类方法给初学者的理解造成一定程度的困难。该文明确区分了函数参数传递涉及的两个基本概念:传递方式和数据类型,从而把问题转化为对参数传递方式和参数数据类型的理解;通过对普通类型变量作为函数参数、指针作为函数参数和数组名作为函数参数三种情况的举例分析,总结出传递方式只有“值传递”一种形式,数据类型的难点主要是指针类型与非指针类型的区别。
  关键词:传递方式;数据类型;值传递;指针;数组
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)07-1688-02
  The Discussion on Function Parameters Passing in the C Language Teaching
  DONG Xin-zheng
  (Department of Computer Science and Technology, Zhuhai College of Jilin University, Zhuhai 519041, China)
  Abstract:The function parameter-passing modes are usually divided into“value passing”and“address passing”in some textbooks, which brings some difficulty for the beginners to understand. This paper makes a clear distinction between parameter-passing mode and data type, which are two basic concepts related with function parameter passing; analyzes three cases: general data type as function parameters, pointer data type as function parameters and array name as function parameters; gets the summary that“pass-by-value”is the only function parameter-passing mode in C language, the difficulty about data type is to distinct between the pointer data type and non-pointer data type.
  Key words:parameter-passing mode; data type; pass-by-value; pointer; array
  1概述
  函数是C语言程序的基本构成模块,通过使用函数,不仅可以省去重复代码的编写,还可以使程序更加模块化,从而有利于程序的阅读、修改和完善。对于C语言的初学者来说,准确理解函数参数的传递方式是难点之一。一些C语言程序设计教材[1][2]中把函数间的参数传递分为“数值传递”和“地址传递”两种方式,这种分类很容易使初学者混淆概念,更不能抓住参数传递的本质。
  2传递方式和数据类型
  “值传递”[3]是函数参数的唯一传递方式。函数的参数分为实际参数(简称实参)和形式参数(简称形参),在定义函数时使用的参数叫形参,在调用函数时使用的参数叫实参。实参可以是常量、变量或表达式,但要求它们有确定的值。实参与形参的结合只有一种方式,即“值传递”,把实参的值赋给形参变量。“值传递”具有单向性,只能把实参传给形参,而不能由形参回传给实参。
  不同数据类型的函数参数对主调函数中变量的作用有所不同。函数参数可取的数据类型为基本类型、构造类型、指针类型或空类型,如图1[3]所示。空类型表示该函数为无参函数,在此不作介绍。其余数据类型又可分为三类:普通类型,包括基本类型、结构体类型和共用体类型;指针类型;数组类型。函数参数为普通类型时,对函数的调用不用影响到主调函数中变量的值;函数参数为指针类型或数组类型时,对函数的调用可以修改主调函数中有关变量的值。
  
  图1
  3普通类型变量作为函数参数
  普通变量作为函数参数时,对形参的修改不会影响到实参。如下例所示,通过“值传递”,形参x保存了实参a的值,形参y保存了实参b的值,因为形参和实参是相互独立的不同变量,所以在swap函数中对形参x和y进行的交换不会反映到实参a和b中。
  #include
  void swap(int x, int y)
  {
  int temp;
  temp=x; x=y; y=temp;
  }
  void main()
  {
  int a, b;
  scanf("%d%d",
其他文献
'伤高怀远'是中国古典诗词的主要意境之一.这类诗词因道出了人生的惆怅而具有永久的魅力.这类诗歌所蕴含的美学意象,是一种超越的距离美,这种美的最高形态为崇高.…
用金相显微镜、扫描电镜、能谱仪分析了钢轨断裂原因.分析认为:钢轨在轧制过程中轨道底部区域收到严重碾压,产生了局部塑性变形和硬化,局部区域夹杂物集中,导致钢轨断裂.
该文介绍了高邮电视台2频道数字硬盘播出系统的总体设计原则,解析了系统各核心部件功能及工作流程。对于要建设同样规模系统的同行提供参考。
目的构建甲基胞嘧啶双加氧酶1(TET1)过表达载体并对其稳定过表达的宫颈癌HeLa细胞进行鉴定。方法从人宫颈癌组织中扩增出TET1目的片段并将其克隆到pLVX-MYRF载体上,构建真核
进食行为和能量代谢均呈现昼夜节律,这种节律性由机体主要的生物钟-下丘脑视交叉上核(SCN)控制。SCN及相关区域对光信号和进食信号进行整合,形成行为节律和外周组织生物钟基
摘要:网络规模的扩大和网络数据拥塞现象的频繁发生,要求对网络延迟的测量理论和方法进行深入研究。基于ICMP这一最常用的TCP/IP协议,可以有效的对网络延迟进行测量,文章介绍了利用ICMP进行延迟测量的常用报文和进行延迟测量的基本方法,并给出了应用实例。  关键词:网络延迟测量;ICMP;报文;LSRR  中图分类号:TP393文献标识码:A文章编号:1009-3044(2012)06-1271-
对低合金耐磨铸铁经高温形变后所获得的粒状碳化物在等温过程中的长大进行了观察、测试及分析.结果表明,粒状碳化物是以大粒子吞食小粒子的方式进行长大的,结果是碳化物尺寸
美学来点思想,如从研究方法、人论、实践论、本体论、认识论、感情论、本质论和美学观诸方面另辟新路,开创新的视角.21世纪的中国美学将无愧于我们这个伟大的时代,为中华民族
期刊
随着物联网时代的到来,嵌入式作为物联网的关键技术,现有的嵌入式教学体系已经不能满足社会对人才的需求。通过分析嵌入式技术的教学现状,从课程体系、实践环节、教学方法方