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

C語言指針部分教學心得

2013-05-14 08:41:46楊英翔
卷宗 2013年11期
關鍵詞:分配程序學生

楊英翔

摘 要:C語言是國內外廣泛使用的一種計算機語言,C語言功能豐富、表達能力強、使用靈活方便、應用面廣、目標程序效率高、可移植性好,既具有高級語言的優點,又具有低級語言的許多特點。

關鍵詞:C語言;教學

0 引言

C語言是國內外廣泛使用的一種計算機語言,C語言功能豐富、表達能力強、使用靈活方便、應用面廣、目標程序效率高、可移植性好,既具有高級語言的優點,又具有低級語言的許多特點。因此,C語言不僅是計算機專業學生的一門重要課程,也是高校中非計算機專業學生學習計算機知識的一門重要課程。

作者的C語言課都是在機房里進行的,學生可以人手一機。在C語言的教學過程中,精講多練,講練結合,依據學生的能力,采用以學生為主體逐步引導、啟發學生。即教師在課堂上起引導的作用,讓學生在機學習,邊學邊練,不斷發現問題,解決問題,循序漸進,逐步提高。這種方法打破了課堂教學和實驗教學的嚴格界線,在C語言的教學實踐中取得了良好的效果。

1 指針用法

指針通常指向一片存儲空間,而空間可采用靜態分配或動態分配。靜態分配是指在編寫C程序時已確定了存儲空間。如使用全局變量,static char a[size],則編譯器為變量a在程序運行時的數據區內固定分配size字節的空間;如函數內定義一個局部變量charb[size],則在執行函數時,局部變量b在棧上分配size字節的存儲空間,函數調用結束時將自動釋放局部數組變量b的存儲空間。

動態分配是指調用庫函數malloc(size)在堆上分配size個字節的連續空間,調用結束后返回一個指向分配好的存儲空間的指針,編程時必須考慮到在使用完該存儲空間后調用對應的函數free( )來釋放掉。

在C編程時,一定要合理使用指針,否則很容易在執行時出現各種錯誤。以下列出常見的幾個錯誤:

(1)在C程序中定義了一個指針變量,但沒有對其進行初始化,將該指針變量稱為“野指針”。如果此后對該指針變量所指的存儲空間進行操作,程序會出現嚴重的錯誤,因為,在定義指針變量后,指針變量的值是不確定的,即指針隨機指向某個內存地址,此時的指針所指的內存直接賦值操作,將該單元中原有的數據覆蓋,使該數據丟失,若指針指向的是系統的數據區中,會導致系統運行的異常甚至死機。因此,C編程時要及時把指針變量賦值,使指針有正確的指向。

(2)如用語句p = malloc(size)來分配空間,應對分配后的參數p進行檢查,如p為NULL則表示分配不到存儲空間,此時不能對p指向的空間操作;即使為p分配了空間,也要注意對該指針操作時不能超出其空間范圍。使用完后,一定要釋放該空間,否則可能引起存儲空間的耗盡。

(3)棧溢出。棧是在調用一個子函數時用來保存和恢復現場,以及傳遞參數和存放局部變量,但在執行子函數時,如果其中的局部變量指針出現使用錯誤,則會發生棧溢出。例如在子函數中,有下列代碼:

char p[8];

strcpy(p,/Notice: This is a test pro-gram!0);

由于棧中為局部變量p只分配了8個字節空間,而strcpy()函數將覆蓋p指向的連續32個字節空間(包括字符串結束符-\ 0.),可能將棧中存放的函數返回地址等內容重寫了,所以子函數執行完后就無法返回到原來的函數繼續運行了。

(4)堆溢出。堆的使用與所在運行平臺的操作系統和編譯器有關,堆溢出也相對復雜。如程序為:

char *p;

p = (char*)malloc(8);

strcpy(p,/No-tice: This is a test program!0);

則執行strcpy()時將覆蓋了緊跟在指針p指向的32個字節的內容,引起堆溢出,程序運行無法正確。

(5)void的用法。void在定義某個函數時,表示該函數無返回值,但庫函數void malloc(size)除外,它并不表示malloc(size)無返回值[5],而表示函數的返回值可以轉換成任何類型的地址值(如char *,int *等)。void不能用來定義數值變量,但可以用void來定義指針變量,它的真實含義是可以將任何數據類型的地址賦給指針變量。

(6)區分數組和指針變量在使用過程中的不同,指針可以通過加減數值來移動它所指的位置,如p+=5;而數組名是不能移動的,如char k[20]; k++;對k的操作是錯誤的。

(7)指針移動時挪動的位移與指針所定義的類型相關,如a和b定義為:char *a;int *b;后續的語句:a+=10;b+=10;則表示a向后移動了10個字節,而b向后移動了10個整型長度,即40個字節。指針變量在使用時要與定義的類型相一致,char c[10];int *d;d=c;此后對d的操作很可能造成混亂。

2 課堂教學中注意培養良好的編程習慣

(1)入門階段。分析和演示運行簡單的C程序,和學生一起對程序進行簡單修改,再演示運行,讓學生對C程序產生感性的認識,激發學生的學習興趣和熱情。這時需要注意在編寫C程序過程中的一些特定格式和語法要求,幫助學生養成良好的編程習慣。

(2)基礎階段。這時的學生應該已經學習了算法、變量、表達式、語句、程序結構等C程序基礎知識。這一階段中,我會經常提出一些簡單的問題,放手讓學生討論,逐步深入理解問題,逐步完善流程圖,然后把流程圖翻譯成標準的C程序,并進行試運行和調試。

這一階段中,可以以教材為線索,擴展介紹C語言的語法知識,但不能停留在語法上,可以根據任務和項目的需要插入介紹一些系統函數,并適時地將所學知識應用到項目和任務當中,讓學生學以致用。

(3)綜合階段。為了讓學生熟練使用語法知識,還需要布置一些較長的程序讓學生閱讀分解,嘗試修改語句和程序結構。這一階段中,我會經常提出一些相對復雜的問題,放手讓學生討論,逐步深入理解問題,逐步完善流程圖,然后把流程圖翻譯成標準的C程序,然后對流程圖和程序反復并進行修改、運行和調試。

這一階段中,要鼓勵學生大膽創新,創造性的運用書上的知識。同時,和學生強調編程的功夫在編程之外,養成學生良好的編程習慣,為學生以后的發展打下基礎。

(4)提升階段。我會根據不同層次的學生提出不同的設計要求,因材施教,盡量使每一個學生都能將所學到的程序設計方法和相關語法綜合應用。同時,告訴學生,要達到能用C語言編寫較大的應用程序,并不是僅在一個學期的學習過程中就能完成的,在以后的實踐中,要繼續學習。

在C語言的教學中,采用適度靈活的教學方法,理論講授和上機實踐緊密結合,語法與實例緊密結合,可以激發學生的學習興趣,增強學生的求知欲,降低課程難度,會達到良好的教學效果。當然,具體教學方式、方法的選擇,不同的老師可以根據實際需要而定。

參考文獻

[1] 范華,秦茂玲,張俊.透視C程序設計語言[J].計算機技術與發展,2008,18(6):64 -661

[2] 譚浩強.C程序設計[M].第3版1北京:清華大學出版社,2005.

[3] Kernighan B W,Ritchie D M.C程序設計語言[M].第2版.徐寶文,等譯.北京:機械工業出版社,2005.

[4] Reek KA.POINTERS ONC[M].徐 波,譯.北京:人民郵電出版社,2003.

猜你喜歡
分配程序學生
應答器THR和TFFR分配及SIL等級探討
遺產的分配
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
一種分配十分不均的財富
績效考核分配的實踐與思考
趕不走的學生
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
學生寫話
學生寫的話
主站蜘蛛池模板: 99在线视频网站| 国产精品浪潮Av| 亚洲人成网站在线观看播放不卡| 久久国产精品国产自线拍| 成年女人a毛片免费视频| 国产女人喷水视频| 亚洲va欧美ⅴa国产va影院| 国产成人综合亚洲网址| 色婷婷成人| 亚洲精品无码日韩国产不卡| 免费观看三级毛片| 国产精品午夜福利麻豆| 青青国产成人免费精品视频| 青草午夜精品视频在线观看| 国模视频一区二区| 亚洲爱婷婷色69堂| 中文无码伦av中文字幕| 国产精品2| yjizz视频最新网站在线| 综合色婷婷| 欧美午夜精品| 人禽伦免费交视频网页播放| 国产一区二区免费播放| 亚洲成人精品在线| 欧洲一区二区三区无码| 福利片91| 国产白浆一区二区三区视频在线| 国产欧美一区二区三区视频在线观看| 国产99在线观看| 美女无遮挡拍拍拍免费视频| 91久久精品国产| 天天综合网亚洲网站| 中文字幕在线视频免费| 欧美一区二区三区欧美日韩亚洲 | 色婷婷狠狠干| 天天色综网| 亚洲人成网线在线播放va| 国产成人1024精品| 久久婷婷色综合老司机| 色妞www精品视频一级下载| 国产成人免费| 福利一区在线| 国产欧美专区在线观看| a级毛片网| 高潮毛片无遮挡高清视频播放| 亚洲美女操| 日本成人在线不卡视频| 熟女成人国产精品视频| 色视频久久| 成人在线观看一区| 在线观看国产精品第一区免费| 四虎精品国产AV二区| 国产精品无码作爱| 伊人久久婷婷五月综合97色| 国产成人亚洲精品色欲AV| 国产成人免费高清AⅤ| 欧美国产日产一区二区| 玩两个丰满老熟女久久网| 欧美a在线| 在线欧美日韩| 伊人婷婷色香五月综合缴缴情| 天堂亚洲网| 国内精品自在欧美一区| 波多野结衣的av一区二区三区| 日韩精品无码免费一区二区三区| 国产视频大全| 国产国产人成免费视频77777| 日韩av无码DVD| 亚洲欧美在线综合图区| 中文字幕乱码二三区免费| 久久综合伊人77777| 日本欧美一二三区色视频| 国产AV无码专区亚洲精品网站| 亚洲成在人线av品善网好看| 国产三区二区| 伊人久久大香线蕉aⅴ色| 伊人丁香五月天久久综合 | 国产精品欧美亚洲韩国日本不卡| 国产激情第一页| 久久精品国产精品国产一区| 国产精选自拍| 精品伊人久久久大香线蕉欧美|