方星星 周麗媛
摘要:C語言函數(shù)參數(shù)傳遞內(nèi)容是教學(xué)的重難點,學(xué)生在分析解決該類問題時的困惑較多。因此,為了提升教學(xué)效率,筆者提出了一套針對函數(shù)參數(shù)傳遞的教學(xué)模式。該模式要求學(xué)生深化對相關(guān)知識點的理解掌握,在講解參數(shù)傳遞過程時將參數(shù)傳遞特點和內(nèi)存變量分布示意圖聯(lián)系起來,最后結(jié)合指針的教學(xué)探討數(shù)組名作為函數(shù)參數(shù)的本質(zhì)。
關(guān)鍵詞:函數(shù)參數(shù)傳遞;教學(xué)模式;參數(shù)傳遞特點
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A 論文編號:1674-2117(2016)17-0084-03
● 引言
函數(shù)參數(shù)傳遞內(nèi)容是C語言教學(xué)中的重點和難點,所以很多教材都詳細(xì)論述了實參和形參的概念及區(qū)別,并將參數(shù)傳遞方式分為值傳遞和地址傳遞兩種,還詳細(xì)闡述了數(shù)組名、指針作為函數(shù)參數(shù)等內(nèi)容。這使得對參數(shù)傳遞這一知識點的介紹較多且分布不均,內(nèi)容之間的規(guī)律性和銜接性不強,學(xué)生不易掌握。調(diào)查發(fā)現(xiàn),不少學(xué)生對參數(shù)的傳遞方式感到困惑,欠缺分析解決問題的能力,這在一定程度上挫傷了他們的學(xué)習(xí)信心和積極性。為了更好地提升教學(xué)效率,筆者在多年教學(xué)經(jīng)驗的基礎(chǔ)上,探討了函數(shù)傳遞教學(xué)形式和方法,以供參考。
● 打牢前期課程內(nèi)容基礎(chǔ),強化對相關(guān)知識點的介紹
眾所周知,C語言的教學(xué)內(nèi)容是循序漸進(jìn)的,只有打下良好的前期基礎(chǔ),才能更深入地學(xué)習(xí)后續(xù)章節(jié)內(nèi)容。為了使學(xué)生深刻理解參數(shù)傳遞的內(nèi)容,教師應(yīng)在課堂上強調(diào)相關(guān)知識點。
首先是變量的概念。它是對內(nèi)存數(shù)據(jù)空間的抽象,有值和地址兩種屬性,要讓學(xué)生注意區(qū)分,這是參數(shù)傳遞和指針學(xué)習(xí)的基礎(chǔ)。
其次是對數(shù)組名的理解。調(diào)查發(fā)現(xiàn),當(dāng)編程題中涉及將數(shù)組名作為函數(shù)參數(shù)時,很多學(xué)生都會犯同樣的錯誤,如將數(shù)組int a[10]作為實參數(shù)組,調(diào)用函數(shù)int average(int s[10],int n)時,學(xué)生經(jīng)常將該函數(shù)調(diào)用寫成avegage(a[10],10)。由于學(xué)生對數(shù)組名的含義沒有深入了解,所以教師在講解數(shù)組時,應(yīng)和學(xué)生強調(diào)數(shù)組名是地址,代表數(shù)組首地址,這樣便于開展后續(xù)教學(xué)內(nèi)容。
再次是函數(shù)一章的知識點,具體包括函數(shù)定義、返回值、函數(shù)說明、函數(shù)調(diào)用、函數(shù)參數(shù)等概念。由于知識點之間貫穿的脈絡(luò)不甚清晰,課堂講解時較為枯燥,所以可結(jié)合案例式和互動式教學(xué)法,讓學(xué)生在課堂上講一遍、動手寫一遍,以加深對這些知識點的理解,深刻領(lǐng)會其在實際中的應(yīng)用。
最后是指針的概念。由于它是C語言的難點,所以在課堂講解中應(yīng)適當(dāng)放慢教學(xué)節(jié)奏,向?qū)W生重點明確指針變量的概念、指針變量和普通變量的區(qū)別、*和&運算的含義、變量的間接訪問、指向數(shù)組元素的指針變量的概念、指針運算的含義、指針變量對數(shù)組元素的引用(指針法)等內(nèi)容,這是后面各種類型的指針變量作為函數(shù)參數(shù)學(xué)習(xí)內(nèi)容的基礎(chǔ)。在此基礎(chǔ)上講解數(shù)組作為函數(shù)參數(shù)傳遞的本質(zhì),往往能收到好的效果。
● 牢記參數(shù)傳遞的特點,畫出內(nèi)存變量分布示意圖
很多教材將參數(shù)的傳遞歸納為值傳遞和地址傳遞兩種,并論述兩者區(qū)別,還指明了地址傳遞的方式和特點,即函數(shù)調(diào)用時,將數(shù)據(jù)的存儲地址作為參數(shù)傳遞給形參,形參與實參占用同樣的存儲單元,進(jìn)行的是雙向傳遞。這樣的總結(jié)固然很好,但學(xué)生不易掌握。在筆者看來,參數(shù)傳遞的兩種劃分是沒有必要的,可以將所有的參數(shù)傳遞都看作是值傳遞,并將參數(shù)傳遞的特點概括為:①函數(shù)調(diào)用前,形參不占用內(nèi)存單元;②函數(shù)調(diào)用時,才給形參分配內(nèi)存單元,且將實參的值傳遞給形參;③函數(shù)調(diào)用結(jié)束后,形參占用的內(nèi)存單元自動釋放。
為了培養(yǎng)學(xué)生的畫圖習(xí)慣,在函數(shù)的教學(xué)中應(yīng)不斷強調(diào)畫出變量在內(nèi)存中的分布示意圖,這樣能清晰無誤地分析結(jié)果,有利于學(xué)生對知識點的深刻理解和熟練運用。如圖1、圖2的例題,學(xué)生往往將結(jié)果錯誤地認(rèn)為是9、5,并反復(fù)提問。

類似問題的講解如果將形參的特點以內(nèi)存的動態(tài)分布圖畫出,學(xué)生能很容易理解,也能收到事半功倍的教學(xué)效果,上述例題的內(nèi)存動態(tài)分布圖可畫為如圖3所示的形式。
很多教材還將“數(shù)組作為函數(shù)參數(shù)”列為函數(shù)一章的一節(jié),并指明了相關(guān)注意事項,如形參數(shù)組可以不指定大小,共同占用存儲單元等,其實這部分內(nèi)容可以安排到“指針”一章中專門介紹,也可以在講解數(shù)組作為函數(shù)參數(shù)傳遞時,簡要說明下實參用的是數(shù)組名,是數(shù)組首地址,形參在形式上雖是數(shù)組,卻是指針變量,即形參數(shù)組int x[10]等價于int*x,所以形參數(shù)組可以不指定大小。并強調(diào)這也是特殊的值傳遞,傳遞給形參的“值”是地址,完全符合值傳遞的三大特點。由于之前沒有學(xué)習(xí)過指針內(nèi)容,所以學(xué)生可以在記憶的基礎(chǔ)上去學(xué)習(xí),并牢記這一特點,即參數(shù)用數(shù)組、實現(xiàn)數(shù)組和形參數(shù)組是同一數(shù)組。再結(jié)合例題(如圖4、圖5)進(jìn)行學(xué)習(xí)時,學(xué)生就很容易理解了,這在無形中也激發(fā)了學(xué)生的探索欲望。
● 掌握指針變量的運用,理解數(shù)組名作為形參的本質(zhì)
在進(jìn)入到指針內(nèi)容的學(xué)習(xí)時,當(dāng)該指針變量指向的是一般變量,并作為函數(shù)參數(shù)時,需指明實參和形參類型要保持一致,是將實參變量的地址作為“值”傳遞給形參變量,再將值傳遞的三大特點和內(nèi)存中變量的動態(tài)分布圖相結(jié)合。
由于前期只是讓學(xué)生記住了實參數(shù)組和形參數(shù)組是同一數(shù)組,學(xué)生并沒有掌握其原理。當(dāng)介紹指向數(shù)組元素的指針變量作為函數(shù)參數(shù)時,應(yīng)和函數(shù)一節(jié)中的數(shù)組名作為參數(shù)的內(nèi)容相銜接合并介紹。很多教材將參數(shù)的傳遞方式總結(jié)為如下頁表所示的對應(yīng)情況。

雖然形式上只有四種,但看起來仍較復(fù)雜。此時,如果通過四個不同的案例,明確被調(diào)用函數(shù)是對數(shù)組元素的不同引用,則能讓學(xué)生深刻明白四種形式的實質(zhì)都是一樣的,都強調(diào)形參數(shù)組的本質(zhì)是指向數(shù)組元素的指針變量,所以數(shù)組的大小可以不指定,都是通過這一變量來引用數(shù)組元素。實參到形參的傳遞是值的傳遞,符合值傳遞的特點,形參指針變量在函數(shù)調(diào)用結(jié)束后會釋放。
● 結(jié)語
為了提升教學(xué)效率,筆者根據(jù)多年的教學(xué)經(jīng)驗以及學(xué)生的反饋情況,對函數(shù)傳遞這一教學(xué)內(nèi)容進(jìn)行了優(yōu)化整合,設(shè)定了層次化的教學(xué)模式。該模式從重視學(xué)生的基礎(chǔ)概念入手,概括出參數(shù)傳遞的特點,要求學(xué)生畫出內(nèi)存變量的動態(tài)分布圖去詳細(xì)分析函數(shù)傳遞的過程,引導(dǎo)學(xué)生理解數(shù)組名作為函數(shù)參數(shù)的本質(zhì),從而達(dá)到學(xué)生在課堂上能聽懂,課后會熟練應(yīng)用的目的,提升了學(xué)生的學(xué)習(xí)信心和學(xué)習(xí)興趣。由于指針變量類型豐富,包括指向函數(shù)的指針、指向數(shù)組的指針、指向指針的指針等,它們都可以用來作為函數(shù)參數(shù),其傳遞過程都符合值傳遞的特點,都是通過形參指針變量來對指向的目標(biāo)進(jìn)行處理,所以本文不再細(xì)述。
參考文獻(xiàn):
[1]譚浩強.C程序設(shè)計[M].北京:清華大學(xué)出版社(第四版),2010.
[2]宋人杰,張洪業(yè).程序設(shè)計類課程教學(xué)體系的改革與實踐[J].科技信息,2012(3):269-270.
作者簡介:方星星(1982—),男,安徽樅陽人,解放軍陸軍軍官學(xué)院,講師,研究方向為計算機網(wǎng)絡(luò)、計算機軟件技術(shù);周麗媛(1985—),女,安徽合肥人,解放軍陸軍軍官學(xué)院,講師,研究方向為計算機基礎(chǔ)教學(xué)理論。