999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

const變量和內(nèi)聯(lián)函數(shù)教學(xué)方法的探討

2021-09-27 03:46:51王曉東
客聯(lián) 2021年7期
關(guān)鍵詞:教學(xué)

摘 要:const變量和內(nèi)聯(lián)函數(shù)是C++語(yǔ)言特有的語(yǔ)法,其功能和使用方法與C語(yǔ)言的宏定義有很多相似之處。本文簡(jiǎn)述了const變量和內(nèi)聯(lián)函數(shù)的功能與使用方法,通過(guò)與宏定義對(duì)比教學(xué),引導(dǎo)學(xué)生在掌握了宏定義的基礎(chǔ)之上,更深刻地理解const變量和內(nèi)聯(lián)函數(shù)的特點(diǎn)。

關(guān)鍵詞:const變量;內(nèi)聯(lián)函數(shù);宏定義;教學(xué)

一、引言

C++語(yǔ)言完全兼容C語(yǔ)言,具有C語(yǔ)言的全部功能。單純就程序語(yǔ)法的學(xué)習(xí)而言,如果已經(jīng)學(xué)習(xí)了C語(yǔ)言,那么再學(xué)習(xí)C++會(huì)輕松一些,只需要重點(diǎn)學(xué)習(xí)C++新增的語(yǔ)法知識(shí)即可,例如類、對(duì)象和繼承等等。const變量和內(nèi)聯(lián)函數(shù)也是C++新增的語(yǔ)法,其功能和使用方法與C語(yǔ)言的宏定義有很多相似之處,但是又有宏定義所不具備的優(yōu)點(diǎn)。在C++語(yǔ)言授課中有意識(shí)地與C語(yǔ)言的宏定義對(duì)照學(xué)習(xí),通過(guò)引導(dǎo)學(xué)生進(jìn)行對(duì)比分析,體會(huì)C++語(yǔ)法的優(yōu)點(diǎn),從而有效掌握新增知識(shí)點(diǎn)。

二、const變量

變量是程序運(yùn)行期間,其值可以改變的量。變量有名字,實(shí)際代表內(nèi)存中某一段存儲(chǔ)空間,其中可以存放數(shù)據(jù)即變量的值,存儲(chǔ)空間的大小由變量的數(shù)據(jù)類型決定。在C++程序中,所有的變量在使用之前都必須要定義。變量的定義主要是指出變量的名稱,確定變量的類型,并讓系統(tǒng)為其分配相應(yīng)的內(nèi)存空間。變量定義語(yǔ)句的一般形式為:

類型 變量名1,變量名2,……;

const變量又稱為只讀變量,其定義形式與普通變量極為相似,只不過(guò)是在數(shù)據(jù)類型的前面加上const而已。例如:

const float PI=3.14;

const變量必須在定義的時(shí)候立刻初始化,而且在程序執(zhí)行期間,其值不能夠被修改。在本例中PI用來(lái)存放圓周率π的值,它的值固定為3.14。C++語(yǔ)言的const變量其用法與C語(yǔ)言的符號(hào)常量,頗有相似之處。所謂符號(hào)常量,就是用標(biāo)識(shí)符表示的常量。C語(yǔ)言允許用宏定義的方式描述符號(hào)常量,例如:

#define PI 3.14

宏定義是指用#define開(kāi)頭的預(yù)處理命令,有無(wú)參數(shù)和有參數(shù)兩種形式。它的作用是用一個(gè)標(biāo)識(shí)符來(lái)代表一個(gè)字符串,標(biāo)識(shí)符稱為宏名,字符串稱為宏體。在編譯預(yù)處理時(shí),把程序中該宏定義之后的所有宏名都用宏體替換,這稱為宏替換。在本例中PI稱為宏名,3.14稱為宏體。在程序中出現(xiàn)標(biāo)識(shí)符PI,即表示常量3.14。

表面上看const變量的實(shí)際效果似乎等同于符號(hào)常量,所以往往有學(xué)生會(huì)提問(wèn),既然用宏定義的方式就可以描述符號(hào)常量,為什么C++語(yǔ)言還要引入const變量呢?這時(shí)就需要給學(xué)生解釋強(qiáng)類型語(yǔ)言的概念。宏定義只是在程序編譯之前做簡(jiǎn)單的字符替換,即用3.14替代PI,并不進(jìn)行數(shù)據(jù)類型的檢查,這樣有可能會(huì)出現(xiàn)一些編譯階段所無(wú)法發(fā)現(xiàn)的錯(cuò)誤;而const變量除了其值不能被修改之外,其它方面完全與變量一樣。C++作為一種強(qiáng)類型語(yǔ)言,在操作之前,編譯器會(huì)對(duì)const變量進(jìn)行類型合法性檢查,從而有可能在編譯階段就發(fā)現(xiàn)一些錯(cuò)誤。這樣做既降低了程序調(diào)試的難度,又提高了程序的可靠性。就此可以乘勢(shì)建議學(xué)生在C++程序中,盡量用const變量,少用宏定義描述的符號(hào)常量。

三、內(nèi)聯(lián)函數(shù)

函數(shù)是C程序?qū)崿F(xiàn)模塊化結(jié)構(gòu)的主要手段,也是C++程序描述對(duì)象行為的主要方法。函數(shù)可以提高程序代碼的可讀性和重用性,便于調(diào)試和維護(hù)。但是函數(shù)調(diào)用也增加了額外的系統(tǒng)開(kāi)銷,例如在程序執(zhí)行轉(zhuǎn)移時(shí),為函數(shù)的變量分配內(nèi)存的存儲(chǔ)空間,保存主調(diào)函數(shù)的執(zhí)行點(diǎn)(現(xiàn)場(chǎng))以及一些參數(shù)和寄存器的值等。C++語(yǔ)言允許程序員將那些代碼較短、調(diào)用頻繁的函數(shù)定義為內(nèi)聯(lián)函數(shù),以提高程序運(yùn)行的效率。內(nèi)聯(lián)函數(shù)的作用是,在調(diào)用它時(shí)并不發(fā)生通常的程序執(zhí)行轉(zhuǎn)移,而是把函數(shù)體的語(yǔ)句插入到函數(shù)調(diào)用處。inline是C++語(yǔ)言的關(guān)鍵字,用來(lái)定義內(nèi)聯(lián)函數(shù)。例如定義一個(gè)函數(shù)area,其功能是計(jì)算正方形的面積。代碼如下:

inline float area(float x)

{

return x*x;

}

從編寫(xiě)程序的角度來(lái)看,內(nèi)聯(lián)函數(shù)的定義和調(diào)用與普通函數(shù)的定義和調(diào)用幾乎沒(méi)有什么差別,只不過(guò)內(nèi)聯(lián)函數(shù)在定義時(shí)多了一個(gè)inline關(guān)鍵字而已。程序運(yùn)行時(shí)內(nèi)聯(lián)函數(shù)并沒(méi)有發(fā)生真正的函數(shù)調(diào)用,而是類似于粘貼動(dòng)作一樣,自動(dòng)把函數(shù)體插入到每一個(gè)函數(shù)調(diào)用的位置。因此內(nèi)聯(lián)函數(shù)是以犧牲程序的空間為代價(jià),來(lái)?yè)Q取程序運(yùn)行的時(shí)間。如果學(xué)生已經(jīng)學(xué)習(xí)過(guò)C語(yǔ)言的帶參數(shù)的宏定義,一定會(huì)發(fā)現(xiàn)它與內(nèi)聯(lián)函數(shù)非常相似。表面上看都具有函數(shù)的形式,有形參,使用時(shí)也是插入到調(diào)用之處等等。例如:

#define area(x) x*x

定義了一個(gè)帶參數(shù)的宏定義,在程序中如果出現(xiàn)area(3.2),將被自動(dòng)替換為3.2*3.2。通過(guò)內(nèi)聯(lián)函數(shù)與帶參數(shù)的宏定義的對(duì)比學(xué)習(xí),學(xué)生可能會(huì)問(wèn),既然帶參數(shù)的宏定義與內(nèi)聯(lián)函數(shù)如此相似,為什么C++語(yǔ)言還要提供內(nèi)聯(lián)函數(shù)這種機(jī)制呢?這就需要教師進(jìn)行深入分析,內(nèi)聯(lián)函數(shù)雖然執(zhí)行機(jī)制與帶參數(shù)的宏定義很相似,但它畢竟是C++的函數(shù),調(diào)用時(shí)C++編譯器會(huì)對(duì)它進(jìn)行類型檢查和參數(shù)檢查,計(jì)算實(shí)參的值,并依次賦給形參。而帶參數(shù)的宏定義在使用時(shí),只是作簡(jiǎn)單的替換工作,即用宏體替代宏名。這種方式是不進(jìn)行任何檢查的,因而會(huì)帶來(lái)一些隱患。

例如在程序中出現(xiàn)area(1+2),我們預(yù)期的結(jié)果顯然是9。但是替換之后變?yōu)?+2*1+2,結(jié)果卻是5。可能有的學(xué)生已經(jīng)看出來(lái)了,只要帶參數(shù)的宏定義的形參帶上括號(hào),就能夠避免類似的問(wèn)題,即寫(xiě)為:#define area(x) (x)*(x)。此時(shí)教師可以接著提問(wèn),難道這樣做了之后,就可以高枕無(wú)憂了嗎?如果在程序中出現(xiàn)8/area(2),我們預(yù)期的結(jié)果顯然是2。但是替換之后變?yōu)?/(2)*(2),結(jié)果卻是8。進(jìn)一步啟發(fā)學(xué)生,即可得出結(jié)論,實(shí)際上要想做到萬(wàn)無(wú)一失,只能寫(xiě)成以下形式:#define area(x) ((x)*(x))。因此相比較而言,內(nèi)聯(lián)函數(shù)沒(méi)有帶參數(shù)的宏定義所可能有的副作用,是一種執(zhí)行效率較高,也較為安全的語(yǔ)法。通過(guò)案例對(duì)比分析,學(xué)生就會(huì)較為容易地接受內(nèi)聯(lián)函數(shù),并樂(lè)于在C++程序中采用。

四、結(jié)語(yǔ)

相對(duì)類、對(duì)象和繼承而言,const變量和內(nèi)聯(lián)函數(shù)并不是C++語(yǔ)言的核心語(yǔ)法。但是通過(guò)與C語(yǔ)言的宏定義對(duì)比教學(xué)中,還是可以讓學(xué)生深刻理解const變量和內(nèi)聯(lián)函數(shù)的特點(diǎn),并逐漸體會(huì)C++語(yǔ)言的優(yōu)點(diǎn),在程序中熟練運(yùn)用。

參考文獻(xiàn):

[1] 王曉東. C++程序設(shè)計(jì)簡(jiǎn)明教程(第二版)[M].北京:中國(guó)水利水電出版社, 2017.

[2] 鄭莉. C++語(yǔ)言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社, 2001.

[3] 江義華. C/C++完美演繹[M].北京:中國(guó)水利水電出版社, 2001.

猜你喜歡
教學(xué)
微課讓高中數(shù)學(xué)教學(xué)更高效
甘肅教育(2020年14期)2020-09-11 07:57:50
「微寫(xiě)作」教學(xué)實(shí)踐的思考
“以讀促寫(xiě)”在初中寫(xiě)作教學(xué)中的應(yīng)用
如何讓高中生物教學(xué)變得生動(dòng)有趣
甘肅教育(2020年12期)2020-04-13 06:25:34
談高中音樂(lè)欣賞教學(xué)中的“聽(tīng)、看、想、說(shuō)、動(dòng)”
“自我診斷表”在高中數(shù)學(xué)教學(xué)中的應(yīng)用
東方教育(2017年19期)2017-12-05 15:14:48
對(duì)外漢語(yǔ)教學(xué)中“想”和“要”的比較
對(duì)識(shí)譜教學(xué)的認(rèn)識(shí)與思考
《可以預(yù)約的雪》教學(xué)探索與思考
對(duì)高等數(shù)學(xué)教學(xué)的一些思考
主站蜘蛛池模板: 国产乱人乱偷精品视频a人人澡| 成人午夜天| 亚洲 日韩 激情 无码 中出| 免费xxxxx在线观看网站| 97超级碰碰碰碰精品| 高清不卡毛片| 中文字幕在线观| 天堂网亚洲系列亚洲系列| 99久久国产精品无码| 亚洲综合片| 国产男女免费完整版视频| 在线观看无码a∨| 99精品热视频这里只有精品7| 国产一级毛片网站| 免费无码网站| 黄片在线永久| 欧美日韩中文国产va另类| 欧美精品在线视频观看| 日韩欧美成人高清在线观看| 精品无码国产自产野外拍在线| 91精品国产91欠久久久久| 亚洲av中文无码乱人伦在线r| 一区二区三区成人| a国产精品| 亚洲第一网站男人都懂| 久久国产V一级毛多内射| 国产农村妇女精品一二区| 高清欧美性猛交XXXX黑人猛交| 亚洲人成在线免费观看| 国产免费羞羞视频| 亚洲成人动漫在线| 亚洲成人网在线观看| 全部毛片免费看| 99这里只有精品在线| 亚洲精品国产精品乱码不卞| 日韩黄色精品| 91黄色在线观看| 成人a免费α片在线视频网站| 在线视频精品一区| 免费国产一级 片内射老| 亚洲一区二区三区国产精华液| 好吊色妇女免费视频免费| 亚洲欧美日韩成人在线| 国产91导航| 午夜毛片免费观看视频 | 欧美a在线| 国产成人精品免费av| 国产人在线成免费视频| 国产呦视频免费视频在线观看| 91九色国产在线| 91精品国产91久无码网站| 国产成人亚洲日韩欧美电影| 国产永久免费视频m3u8| 97成人在线视频| Jizz国产色系免费| 国产成人在线无码免费视频| 日韩中文精品亚洲第三区| 亚洲精品卡2卡3卡4卡5卡区| 91小视频版在线观看www| 日本精品αv中文字幕| 中文字幕无码av专区久久| 免费人成在线观看成人片| 国产视频 第一页| 毛片久久久| 幺女国产一级毛片| 中文字幕无码电影| 日韩av电影一区二区三区四区| 99精品福利视频| 亚洲午夜18| 欧美一区精品| 人妻丰满熟妇αv无码| 免费国产小视频在线观看| m男亚洲一区中文字幕| 激情乱人伦| 亚洲国产精品日韩专区AV| 日本欧美一二三区色视频| 日韩成人在线视频| 国产伦精品一区二区三区视频优播| 午夜视频日本| 国产在线精彩视频论坛| 中文字幕 日韩 欧美| 福利视频99|