首页 原创:C语言教学中函数参数传递问题探讨

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

举报
开通vip

原创:C语言教学中函数参数传递问题探讨原创:C语言教学中函数参数传递问题探讨 摘要:在一些C语言教材和参考资料中,常常把函数参数传递分为“数值传递”和“地 址传递”两种方式,这种概念模糊的分类方法给初学者的理解造成一定程度的困难。该文明 确区分了函数参数传递涉及的两个基本概念:传递方式和数据类型,从而把问题转化为对参 数传递方式和参数数据类型的理解;通过对普通类型变量作为函数参数、指针作为函数参数 和数组名作为函数参数三种情况的举例分析,总结出传递方式只有“值传递”一种形式,数 据类型的难点主要是指针类型与非指针类型的区别。 中国论文网 关键词:...

原创:C语言教学中函数参数传递问题探讨
原创:C语言教学中函数参数传递问题探讨 摘要:在一些C语言教材和参考 资料 新概念英语资料下载李居明饿命改运学pdf成本会计期末资料社会工作导论资料工程结算所需资料清单 中,常常把函数参数传递分为“数值传递”和“地 址传递”两种方式,这种概念模糊的分类方法给初学者的理解造成一定程度的困难。该文明 确区分了函数参数传递涉及的两个基本概念:传递方式和数据类型,从而把问题转化为对参 数传递方式和参数数据类型的理解;通过对普通类型变量作为函数参数、指针作为函数参数 和数组名作为函数参数三种情况的举例分析, 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 出传递方式只有“值传递”一种形式,数 据类型的难点主要是指针类型与非指针类型的区别。 中国论文网 关键词:传递方式;数据类型;值传递;指针;数组 中图分类号: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语言程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 教材[1][2]中把函数间的参 数传递分为“数值传递”和“地址传递”两种方式,这种分类很容易使初学者混淆概念,更 不能抓住参数传递的本质。 2传递方式和数据类型 “值传递”[3]是函数参数的唯一传递方式。函数的参数分为实际参数(简称实参)和形 式参数(简称形参),在定义函数时使用的参数叫形参,在调用函数时使用的参数叫实参。实 参可以是常量、变量或表达式,但要求它们有确定的值。实参与形参的结合只有一种方式, 即“值传递”,把实参的值赋给形参变量。“值传递”具有单向性,只能把实参传给形参,而 不能由形参回传给实参。 不同数据类型的函数参数对主调函数中变量的作用有所不同。函数参数可取的数据类型 为基本类型、构造类型、指针类型或空类型,如图1[3]所示。空类型表示该函数为无参函数, 在此不作介绍。其余数据类型又可分为三类:普通类型,包括基本类型、结构体类型和共用 体类型;指针类型;数组类型。函数参数为普通类型时,对函数的调用不用影响到主调函数 中变量的值;函数参数为指针类型或数组类型时,对函数的调用可以修改主调函数中有关变 量的值。 图1 3普通类型变量作为函数参数 win7系统 深度2013最新旗舰版下载www.xp051.com iem 普通变量作为函数参数时,对形参的修改不会影响到实参。如下例所示,通过“值传递”,形参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", &a, &b); swap(a, b); printf("%d %d\n", a, b); } 输入:1 2 输出:1 2 4指针作为函数参数 变量的指针就是变量的地址,存放变量地址的变量叫指针变量,定义指针变量的一般形式为: 基类型*指针变量名; 通过指针变量访问其所指向的变量的方式称为间接访问方式。如下例所示。 int age; a=10; //直接访问方式 int* p=&a; *p=11; //间接访问方式 指针类型作为函数参数时,参数传递方式仍然是“值传递”,即把实参的值传递给形参。不同的是参数为指针变量,可以通过形参的间接访问方式来读取或修改主调函数中有关变量的值。 如下例所示,通过“值传递”,形参x保存了变量a的地址,形参y保存了变量b的地址,即x指向变量a,y指向变量b,在swap函数中通过间接访问方式交换了变量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", &a, &b); swap(&a, &b); printf("%d %d\n", a, b); win7系统 深度2013最新旗舰版下载www.xp051.com iem } 输入:1 2 输出:2 1 5数组名作为函数参数 数组元素和数组名也可以作为函数参数,数组元素作为函数参数与普通变量用法相同,数组名作为函数参数与指针变量相同。 用数组名作函数形参时,指定数组大小是不起任何作用的。因为C语言编译对形参数组大小不做检查,只是将实参数组的首地址传递给形参数组。实参数组名即是实参数组的首地址,相当于指针常量;形参数组名相当于指针变量。实际上,C编译都是将形参数组名作为指针变量来处理的[3]。所以,数组名作为函数参数可以按指针作为函数参数来理解。 如下例所示,数组名array代表数组array的首地址,通过“值传递”,形参数组名a,也可以理解为形参指针变量a,保存了数组array的首地址,因此,在swap函数中对形参数组a的操作即是对实参数组array的操作。 #include void swap(int a[]) { int temp; temp=a[0]; a[0]=a[1]; a[1]=temp; } void main() { int array[2]; scanf("%d%d", &array[0], &array[1]); swap(array); printf("%d %d\n", array[0], array[1]); } 输入:1 2 输出:2 1 6结论 综上所述,C语言函数参数问题主要涉及两个概念:传递方式和数据类型。实参与形参的传递方式只有一种,即“值传递”。参数的数据类型可以为普通类型、指针类型和数组类型,数组类型实际上是按指针类型来处理的,所以,主要是指针类型与非指针类型的区别。对初学者来说,问题的难点在于数据类型的不同而非传递方式,即指针类型变量与非指针类型变量的区别。 参考文献: [1]田祥宏.C语言程序设计[M].西安:西安电子科技大学出版社,2007. [2]李明.C语言程序设计教程[M].上海:上海交通大学出版社,2008. [3]谭浩强.C程序设计[M]. 3版.北京:清华大学出版社,2005. 转载请注明来源。原文地址: win7系统 深度2013最新旗舰版下载www.xp051.com iem
本文档为【原创:C语言教学中函数参数传递问题探讨】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_511210
暂无简介~
格式:doc
大小:20KB
软件:Word
页数:0
分类:
上传时间:2018-02-17
浏览量:7