亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇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++語言特有的語法,其功能和使用方法與C語言的宏定義有很多相似之處。本文簡述了const變量和內(nèi)聯(lián)函數(shù)的功能與使用方法,通過與宏定義對比教學(xué),引導(dǎo)學(xué)生在掌握了宏定義的基礎(chǔ)之上,更深刻地理解const變量和內(nèi)聯(lián)函數(shù)的特點。

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

        一、引言

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

        二、const變量

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

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

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

        const float PI=3.14;

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

        #define PI 3.14

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

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

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

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

        inline float area(float x)

        {

        return x*x;

        }

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

        #define area(x) x*x

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

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

        四、結(jié)語

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

        參考文獻:

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

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

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

        猜你喜歡
        教學(xué)
        微課讓高中數(shù)學(xué)教學(xué)更高效
        甘肅教育(2020年14期)2020-09-11 07:57:50
        「微寫作」教學(xué)實踐的思考
        “以讀促寫”在初中寫作教學(xué)中的應(yīng)用
        如何讓高中生物教學(xué)變得生動有趣
        甘肅教育(2020年12期)2020-04-13 06:25:34
        談高中音樂欣賞教學(xué)中的“聽、看、想、說、動”
        “自我診斷表”在高中數(shù)學(xué)教學(xué)中的應(yīng)用
        東方教育(2017年19期)2017-12-05 15:14:48
        對外漢語教學(xué)中“想”和“要”的比較
        對識譜教學(xué)的認識與思考
        《可以預(yù)約的雪》教學(xué)探索與思考
        對高等數(shù)學(xué)教學(xué)的一些思考
        亚洲乳大丰满中文字幕| 久久久人妻一区精品久久久| 美女视频黄a视频全免费网站色| 色婷婷一区二区三区四区成人网| 日本公与熄乱理在线播放| 在线精品国内视频秒播| 国产熟女乱综合一区二区三区| 久久综合九色综合97婷婷| 日本亚洲欧美色视频在线播放| 亚洲h视频| 久久精品国产亚洲av热一区| 午夜精品久久99蜜桃| 国产乡下三级全黄三级| 色狠狠色狠狠综合一区| 日韩人妻高清福利视频| 亚洲av综合av一区| 国产莉萝无码av在线播放| 国产成人啪精品午夜网站| 一区二区三区人妻在线| 国产精品成人无码久久久久久| 亚洲国产无套无码av电影| 亚洲欧美日韩精品高清| 狼人精品剧情av在线观看| 亚洲av无码久久| 亚洲国产精品一区二区第四页| 国产福利一区二区三区视频在线看| 国产天堂av在线一二三四| 任你躁国产自任一区二区三区| 国产精品大屁股1区二区三区| 亚洲av手机在线一区| 特级做a爰片毛片免费看| 嫩草影院未满十八岁禁止入内| 粉嫩国产白浆在线播放| 黄片视频大全在线免费播放| 亚洲精品国产av天美传媒| 久久精品伊人无码二区| 少妇人妻av一区二区三区| 人妻少妇乱子伦无码视频专区| 国产精品美女久久久久久2018| 国产精品久久国产精品久久| 精品高朝久久久久9999|