const变量和内联函数教学方法的探讨

来源 :客联 | 被引量 : 0次 | 上传用户:xiezuoyaoxiezuoyao
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:const变量和内联函数是C++语言特有的语法,其功能和使用方法与C语言的宏定义有很多相似之处。本文简述了const变量和内联函数的功能与使用方法,通过与宏定义对比教学,引导学生在掌握了宏定义的基础之上,更深刻地理解const变量和内联函数的特点。
  关键词:const变量;内联函数;宏定义;教学
  一、引言
   C++语言完全兼容C语言,具有C语言的全部功能。单纯就程序语法的学习而言,如果已经学习了C语言,那么再学习C++会轻松一些,只需要重点学习C++新增的语法知识即可,例如类、对象和继承等等。const变量和内联函数也是C++新增的语法,其功能和使用方法与C语言的宏定义有很多相似之处,但是又有宏定义所不具备的优点。在C++语言授课中有意识地与C语言的宏定义对照学习,通过引导学生进行对比分析,体会C++语法的优点,从而有效掌握新增知识点。
  二、const变量
   变量是程序运行期间,其值可以改变的量。变量有名字,实际代表内存中某一段存储空间,其中可以存放数据即变量的值,存储空间的大小由变量的数据类型决定。在C++程序中,所有的变量在使用之前都必须要定义。变量的定义主要是指出变量的名称,确定变量的类型,并让系统为其分配相应的内存空间。变量定义语句的一般形式为:
   类型 变量名1,变量名2,……;
   const变量又称为只读变量,其定义形式与普通变量极为相似,只不过是在数据类型的前面加上const而已。例如:
   const float PI=3.14;
   const变量必须在定义的时候立刻初始化,而且在程序执行期间,其值不能够被修改。在本例中PI用来存放圆周率π的值,它的值固定为3.14。C++语言的const变量其用法与C语言的符号常量,颇有相似之处。所谓符号常量,就是用标识符表示的常量。C语言允许用宏定义的方式描述符号常量,例如:
   #define PI 3.14
   宏定义是指用#define开头的预处理命令,有无参数和有参数两种形式。它的作用是用一个标识符来代表一个字符串,标识符称为宏名,字符串称为宏体。在编译预处理时,把程序中该宏定义之后的所有宏名都用宏体替换,这称为宏替换。在本例中PI称为宏名,3.14称为宏体。在程序中出现标识符PI,即表示常量3.14。
   表面上看const变量的实际效果似乎等同于符号常量,所以往往有学生会提问,既然用宏定义的方式就可以描述符号常量,为什么C++语言还要引入const变量呢?这时就需要给学生解释强类型语言的概念。宏定义只是在程序编译之前做简单的字符替换,即用3.14替代PI,并不进行数据类型的检查,这样有可能会出现一些编译阶段所无法发现的错误;而const变量除了其值不能被修改之外,其它方面完全与变量一样。C++作为一种强类型语言,在操作之前,编译器会对const变量进行类型合法性检查,从而有可能在编译阶段就发现一些错误。这样做既降低了程序调试的难度,又提高了程序的可靠性。就此可以乘势建议学生在C++程序中,尽量用const变量,少用宏定义描述的符号常量。
  三、内联函数
   函数是C程序实现模块化结构的主要手段,也是C++程序描述对象行为的主要方法。函数可以提高程序代码的可读性和重用性,便于调试和维护。但是函数调用也增加了额外的系统开销,例如在程序執行转移时,为函数的变量分配内存的存储空间,保存主调函数的执行点(现场)以及一些参数和寄存器的值等。C++语言允许程序员将那些代码较短、调用频繁的函数定义为内联函数,以提高程序运行的效率。内联函数的作用是,在调用它时并不发生通常的程序执行转移,而是把函数体的语句插入到函数调用处。inline是C++语言的关键字,用来定义内联函数。例如定义一个函数area,其功能是计算正方形的面积。代码如下:
  inline float area(float x)
  {
   return x*x;
  }
   从编写程序的角度来看,内联函数的定义和调用与普通函数的定义和调用几乎没有什么差别,只不过内联函数在定义时多了一个inline关键字而已。程序运行时内联函数并没有发生真正的函数调用,而是类似于粘贴动作一样,自动把函数体插入到每一个函数调用的位置。因此内联函数是以牺牲程序的空间为代价,来换取程序运行的时间。如果学生已经学习过C语言的带参数的宏定义,一定会发现它与内联函数非常相似。表面上看都具有函数的形式,有形参,使用时也是插入到调用之处等等。例如:
   #define area(x) x*x
   定义了一个带参数的宏定义,在程序中如果出现area(3.2),将被自动替换为3.2*3.2。通过内联函数与带参数的宏定义的对比学习,学生可能会问,既然带参数的宏定义与内联函数如此相似,为什么C++语言还要提供内联函数这种机制呢?这就需要教师进行深入分析,内联函数虽然执行机制与带参数的宏定义很相似,但它毕竟是C++的函数,调用时C++编译器会对它进行类型检查和参数检查,计算实参的值,并依次赋给形参。而带参数的宏定义在使用时,只是作简单的替换工作,即用宏体替代宏名。这种方式是不进行任何检查的,因而会带来一些隐患。
   例如在程序中出现area(1+2),我们预期的结果显然是9。但是替换之后变为1+2*1+2,结果却是5。可能有的学生已经看出来了,只要带参数的宏定义的形参带上括号,就能够避免类似的问题,即写为:#define area(x) (x)*(x)。此时教师可以接着提问,难道这样做了之后,就可以高枕无忧了吗?如果在程序中出现8/area(2),我们预期的结果显然是2。但是替换之后变为8/(2)*(2),结果却是8。进一步启发学生,即可得出结论,实际上要想做到万无一失,只能写成以下形式:#define area(x) ((x)*(x))。因此相比较而言,内联函数没有带参数的宏定义所可能有的副作用,是一种执行效率较高,也较为安全的语法。通过案例对比分析,学生就会较为容易地接受内联函数,并乐于在C++程序中采用。
  四、结语
   相对类、对象和继承而言,const变量和内联函数并不是C++语言的核心语法。但是通过与C语言的宏定义对比教学中,还是可以让学生深刻理解const变量和内联函数的特点,并逐渐体会C++语言的优点,在程序中熟练运用。
  参考文献:
  [1] 王晓东. C++程序设计简明教程(第二版)[M].北京:中国水利水电出版社, 2017.
  [2] 郑莉. C++语言程序设计[M].北京:清华大学出版社, 2001.
  [3] 江义华. C/C++完美演绎[M].北京:中国水利水电出版社, 2001.
其他文献
【摘要】互联网的不断普及和发展,使传统小学教育教学模式受到冲击。同时,互联网中强大的数据资源也为教学革新提供了新的发展机遇。不断加强对互联网资源的应用与完善,可以有效促进新课改发展,也能为素质教育改革奠定扎实基础。本文将对应用与完善互联网教育资源的价值进行分析,并阐述小学教育教学中应用与完善互联网资源的策略。希望本文可以为有效促进义务教育发展提供建议,同时为新课改发展提供一些参考。  【关键词】义
期刊
摘 要:自主學习能力是学生终身发展必备的技能,更是创新人才必备的素质。因此如何充分调动学生的学习积极性,培养学生的自主学习意识,转变学生的学习方式,提高学生自主学习化学的能力,拥有较强的获取知识的能力,为学生的终身学习和发展打下坚实的基础,是一件非常有意义的事。  关键词:学案导学;构建知识网络;实验探究      《学会生存》一书提出:“未来的文盲不再是不识字的人,而是没有学会怎样学习的人
期刊
【摘要】本文以西南石油大学本科学生为调查对象,通过自填式问卷对大学生社会责任感现状展开调查,在分析数据基础上,一方面了解新时代大学生社会责任感培育现状,另一方面分析现状背后成因,为大学生社会责任感培养和提升路径提出有效对策建议。  【關键词】新时代大学生 社会责任感培养 问卷调查  【课题项目】西南石油大学国家大学生文化素质教育基地资助项目(WH2020Z002);四川大学生思想政治教育研究中心项
期刊
摘 要:新时代大学生民族团结进步教育是新时代的新要求,对于新时代我国民族团结进步具有重要的意义,能够培养德智体美劳全面发展的社会主义建设者和接班人。分析新时代大学生民族团结进步教育的特点,总结新时代大学生民族团结进步教育的现状,在此基础上梳理新时代大学生民族团结进步教育的路径,为新时代大学生民族团结进步教育奉献绵薄之力。  关键词:新时代;民族团结进步教育;路径;大学生  一、新时代大学生民族团结
期刊
摘 要:21世纪以来,全球信息化发展迅速,除传统媒体的单一表现形式之外,互联网逐步发展起来,成为受众更广、覆盖信息更全面的传播方式。在互联网的背景下,网络话语权逐渐成为各国在国际竞争中新的博弈中心。高校思想政治教育网络话语体系建设既推动高校思想政治教育动力,也是帮助思想政治教育内容和互动有效落实的关键支撑。一般来说,该体系由话语内容、话语方式、话语效果等基本要素组成,其中话语内容是最基本的部分,往
期刊
【摘要】航空航天类专业“课程思政”实施是党中央提出的关于我国高等教育的最新要求,是符合航空航天类专业设置的基本要求的重要举措,因而实施“课程思政”对航空航天类专业具有必要性。航空航天概论 “课程思政”专业知识传授过程中实现立德树人的目标,以此为目标,对“课程思政”进行系统设计,充分发挥党支部全体党员教师的集体优势,同心同力,同向同行。  【关键词】航空航天概论 课程思政 教学改革 教学内容 教学资
期刊
【摘要】现如今,有很多组织和国家重视学生的核心素养培养,通过培养学生核心素养进行课程体系建设,与此同时,这些有关联的理论研究和实践正在中国形成一股研究热潮,引起学术界诸多讨论和学校实践层面诸多变革。本文主要以上海市F学校为个案,采用质性研究方法,通过参与式观察、访谈和材料收集获取研究的主要材料,旨在分析学校基于学生核心素养的校本课程建设的经验和问题。通过对案例学校课程建设全过程的分析,总结出基于核
期刊
【摘要】教育云的出现与应用,为实践基于大数据的深度学习提供可能性。本文结合南平市建阳区智慧教育云平台,结合建阳一中智慧校园平台,提出轻、智、思的教学主张,即在智慧校园环境下采用轻课堂的方式提升学生的计算思维。尝试以“互联网+教育”大平台的新思维,落实信息技术学科核心素养的培养目标。  【关键词】轻课堂 智慧教学 计算思维 信息化  【课题项目】本文系福建省教育科学“十三五”规划2020年度课题“智
期刊
【摘要】医学检验技术专业要求本专业的学生不但要掌握各门专业核心课程的理论知识,同时又必须具备较高的实践技能。“真知检验”微信公众平台在课前、课中、课后有效地将双主体教学中《微生物学检验》课程中的理论与实践、教授与学习结合起来,有利于学生预习、复习、自学以及开展创新活动,大大提高了理论及实践的教学效果。  【关键词】微生物学检验 真知检验 教学  【基金项目】安徽省质量工程教学研究项目重点项目:“双
期刊
【摘要】依托互联网的信息化教学理念为高校教学改革实践提供了很大的机遇,传统的以知识传授为主的课堂教学难以担负培养世界一流人才的重任。针对数据通信与网络技术课程涉及知识面广和概念抽象等特点,深入分析和研究了基于“雨课堂”平台的课堂互动教学模式,探讨了其在激发学习兴趣、改善学习效果和培养综合能力等方面的积极作用。  【关键词】雨课堂 互动教学 教学模式 数据通信  【中图分类号】TP393-4 【文
期刊