張瑜
摘要 在高校的C語言教學中,指針模塊一直以來都是教學重點和難點,高校教師致力于探索易于學生理解和接受的教學方法。在學習C語言中復雜數(shù)據(jù)結(jié)構(gòu)的學習中,指針的定義起到了關鍵作用,指針本身就具有相當大的難度,加上復雜數(shù)據(jù)結(jié)構(gòu)的抽象性,給高效教師的教學帶來較大難度。本文對指針及指針變量作了明確的定義,闡明了指針在定義復雜數(shù)據(jù)結(jié)構(gòu)中的方法以及作用。
[關鍵詞]c語言指針 復雜數(shù)據(jù)結(jié)構(gòu) 定義變量
1 引言
C語言指針在應用上具有簡化、效率高的特點,可以定義較為復雜的數(shù)據(jù)結(jié)構(gòu),使復雜的數(shù)據(jù)結(jié)構(gòu)簡單化,指針與數(shù)據(jù)的存儲方式(物理)有密切的聯(lián)系;指針作為C語言程序的核心,概念復雜難懂,變量變換又十分復雜,學生在理解上存在較大難度。在教學中,教師通常會花費較長的課時講授指針的相關知識,力求學生能扎實的掌握指針基礎,為后面的編程學習打下堅實的基礎。本文針對C語言指針在定義復雜數(shù)據(jù)中的作用及方法進行了詳細的討論,以下為討論結(jié)果。
2 C語言中指針和指針變量的概念和應用
C語言中對指針是有明確的定義,指針即存儲計算機內(nèi)存地址的一種變量形式,存儲單元中每個字節(jié)都有自己的編號,且每個字節(jié)的編號唯一,就是我們所說的地址。在編程的過程中,每一個被定義的變量在編譯時,電腦都會自動給他們分配一定字節(jié)大小的存儲空間,該變量的地址就是存儲空間首個字節(jié)的編號,確切大的說,該變量的指針就是該變量的地址。在編程的過程中,也會使用一個變量來存放另一個變量,這也就是我們常說的指針變量。由于指針和指針變量在定義上十分抽象,學生很難理解,教師在實際的講解中可以通過生動形象的比擬方式去強化學生的理解與接受。這里有一個十分形象的比較,我們把存儲空間比作是一整棟宿舍樓,那么宿舍樓內(nèi)的每一個房間都是一個存儲單元,而住在房間內(nèi)的學生就相當于一個個的數(shù)據(jù),每間房間的門牌號就可以比作數(shù)據(jù)的地址,即指針;能對每間房間進行管理的門衛(wèi)室可以理解為C語言中的指針變量。這樣理解起來就十分容易,學生能很好的掌握存儲空間與存儲單元和數(shù)據(jù)及指針間的關系,為后期的學習帶來很大幫助。
3 C語言中用指針定義復雜數(shù)據(jù)結(jié)構(gòu)的常規(guī)方法
3.1 對基類型的定義
在編碼復雜的數(shù)據(jù)結(jié)構(gòu)時,首先要做的就是定義指針變量,在定義指針變量的過程中,首先要做的就是定義基類型。一般的指針變量都是由兩部分組成的,基類型和指針變量名,這里對指針變量的賦值要與基類型相互匹配,換句話說,也就是基類型的變量有其專門的存放地址,即指針變量。這里舉一個簡單的例子,C語言語句,fioat b;int*p;p=&b;p=2000;其中,編譯時會發(fā)現(xiàn)第三句和第四句無法運行,出現(xiàn)報錯提示,原因就是定義指針時,沒有先定義基類型。這里簡單解釋一下,如果允許指針變量指向任意的基類型,會導致內(nèi)存空間出現(xiàn)一些不確定的變化因素,嚴重時會導致程序狀態(tài)崩潰;基類型在指針運算上起到積極作用。
3.2 對指針相關運算符熟練運用
C語言指針模塊中用到的運算符并不多,“*”(指針運算符)、“口”(下標運算符)和“&”(地址運算符)。指針運算符用于定義指針,地址運算符用于定義地址,這里值得注意的是下標運算符,下標運算符在指針模塊中只起到說明作用,不起到運算符的作用;這里還要注意指針變量與普通變量的區(qū)分。教師講課的重點主要在上機操作上,讓學生真正做到會用,而不是空有一個概念,落實不到實踐上。
3.3 對復雜數(shù)據(jù)結(jié)構(gòu)的定義
指針在定義復雜的數(shù)據(jù)結(jié)構(gòu)時,可以說明復雜數(shù)據(jù)結(jié)構(gòu)中的含有復雜元素的數(shù)組、含有復雜函數(shù)的指針等等一系列對象,這也是為什么編程中使用指針能簡化復雜對象,提高程序員的編程效率。前面提到下標運算符的注意事項,這里再提幾點其他運算符的使用,“()”的優(yōu)先級僅次于用戶標識符,有時作為括號運算符,有時又能作為函數(shù)標志,在使用時要根據(jù)不同的用途對它的定義進行選擇和區(qū)分。通常情況下,一個括號如果和用戶標識符或者與另一個括號挨著,那么這個括號為函數(shù)標志;如果一個括號內(nèi)內(nèi)容為空。那么它也被認為是函數(shù)標志,其余的情況被認為是普通的括號運算符。
使用指針定義復雜的數(shù)據(jù)結(jié)構(gòu)其實就是使用指針去對復雜數(shù)據(jù)結(jié)構(gòu)中的各個部分進行說明,根據(jù)優(yōu)先級排序,按照用戶標識符、括號運算符、函數(shù)標志、指針標志、數(shù)組標志的順序來逐個進行說明。
4 結(jié)束語
在C語言中,指針可以說是C語言的精華部分,指針的概念貫穿了整個C語言,能否熟練掌握指針的定義方法和使用技巧,是能否熟練運用C語言程序編程的關鍵。C語言作為一門基礎的編程語言,在難度上卻不低于其他的編程語言,其中最難學習的部分就是指針,首先,指針的概念抽象且復雜多變,在編程的過程中又十分多變(指針的應用十分靈活),這給剛剛接觸編程語言的高校學生到來了很大的難度,并容易使學生產(chǎn)生厭煩的心理;這就對高校教師在教學中提出了嚴格要求,不僅要對基礎知識進行詳細的講解,還要注重實例的參考與講解,調(diào)動學生的動手能力和思考能力,讓每個學生都能弄清每個實例;反復練習是一個很好的方法,練習過后要注意總結(jié)程序運行失敗的原因并牢記于心,這樣才能將C語言越用越熟練。另外,本篇論文對C語言指針的相關討論仍然十分淺顯,僅希望本篇論文能在教學上發(fā)揮一些積極作用。
參考文獻
[1]段紅義.C語言指針教學中常見錯誤分析[J].電腦知識與技術,2017,13 (04):77- 78.
[2]鐵菊紅,彭輝.C語言指針過程化教學方法研究[J].計算機教育,2017 (01):102-104.
[3]袁太文.一種C語言指針作為函數(shù)參數(shù)的圖形化分析方法[J].福建電腦,2016(01):129-131.