国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C語言指針教學(xué)中的知識點(diǎn)分析與總結(jié)

2011-12-31 00:00:00李俊
計(jì)算機(jī)教育 2011年8期


  摘要:分析指針的基本概念及指針在數(shù)組、函數(shù)、字符串、動態(tài)存儲分配等方面的應(yīng)用,提出指針教學(xué)過程中易混淆概念及注意事項(xiàng),對初學(xué)者深入理解指針原理及應(yīng)用有重要的指導(dǎo)意義。
  關(guān)鍵詞:指針;地址;數(shù)組;字符串;函數(shù);動態(tài)存儲分配
  
  C語言是一門重要的計(jì)算機(jī)基礎(chǔ)課程,指針是C語言的精華。而指針應(yīng)用范圍廣、使用靈活等特點(diǎn)時(shí)常讓初學(xué)者感到困惑。利用指針可以訪問各種類型的數(shù)據(jù),能夠?qū)崿F(xiàn)動態(tài)存儲分配,提高編程效率,加深對數(shù)據(jù)存儲方式的理解。本文從指針的基本概念,指針在數(shù)組、函數(shù)、字符串、動態(tài)存儲分配等方面的應(yīng)用入手,剖析指針與各部分基礎(chǔ)知識相結(jié)合時(shí)的教學(xué)重點(diǎn)和難點(diǎn)。利用對比的方法指出初學(xué)者在學(xué)習(xí)指針過程中易混的概念及注意事項(xiàng),有利于初學(xué)者對指針的理解和掌握。
  1指針基本概念的理解
  指針學(xué)習(xí)首先應(yīng)掌握其基本概念。指針即地址、地址即指針。程序運(yùn)行過程中,變量、數(shù)組、函數(shù)等都存放在內(nèi)存的存儲單元中,每個(gè)存儲單元都有地址。使用變量、數(shù)組、函數(shù)既可以直接訪問,又可以利用其存儲單元地址進(jìn)行間接訪問,這種間接訪問便是借助指針來完成的。
  1.1對指針類型的理解
  理解指針概念要從指針類型入手,教師在教學(xué)中應(yīng)著重講述指針類型的含義,以及與普通變量類型的區(qū)別。指針定義時(shí)的類型稱為指針的基礎(chǔ)類型,理解上應(yīng)區(qū)別于普通變量的類型。如定義:
  由上表可以看出,普通變量的數(shù)據(jù)類型決定了其占用內(nèi)存單元的字節(jié)數(shù)以及存放數(shù)值的范圍。而指針變量不論其基礎(chǔ)類型為何種類型,均占用4個(gè)字節(jié)的存儲空間。并且指針變量與普通變量最大的區(qū)別在于,指針變量存地址值,而普通變量存數(shù)值。
  1.2指針運(yùn)算符的理解
  1.2.1對取地址符“&”的理解
  指針變量定義后應(yīng)為其賦一個(gè)有效地址值,讓它指向有效的存儲空間。未賦值的指針變量稱為“懸空”指針,使用懸空指針非常危險(xiǎn),可能會導(dǎo)致系統(tǒng)崩潰。為指針變量賦值時(shí)常要用到取地址運(yùn)算符“&”。令初學(xué)者常常感到困惑的是分不清賦值號左右兩側(cè)的數(shù)據(jù)類型是否匹配。圖1所示為指針變量正確的賦值關(guān)系。
  1.2.2對取內(nèi)容符“*”的理解
  取內(nèi)容符“*”又稱間接運(yùn)算符。當(dāng)指針指向某存儲單元后,利用指針訪問該存儲單元的內(nèi)容便要用到取內(nèi)容符。為幫助初學(xué)者更好的理解取內(nèi)容符,在教學(xué)過程中應(yīng)著重強(qiáng)調(diào)以下幾個(gè)易混淆概念。
  1) 取內(nèi)容符不是取指針變量自己的內(nèi)容,而是取指針變量所指存儲單元里的內(nèi)容。
  2) 應(yīng)區(qū)分取內(nèi)容符和指針變量定義時(shí)的星號。前者是一個(gè)運(yùn)算符,后者僅僅是一個(gè)標(biāo)志。
  3)“取內(nèi)容”運(yùn)算與“取地址”運(yùn)算互為反向運(yùn)算。取內(nèi)容符“*”可以放在一級指針變量或者二級指針變量前面,但是不可以放在普通變量前面。對于取內(nèi)容運(yùn)算有以下關(guān)系:
  * 二級指針 一級地址
  * 一級指針 數(shù)值
  1.2.3對指針加、減運(yùn)算的理解
  對指針變量加減運(yùn)算的學(xué)習(xí)應(yīng)區(qū)別于普通變量的加減運(yùn)算。指針的加減運(yùn)算是控制指針前移或后移,其移動的具體字節(jié)數(shù)由指針的基礎(chǔ)類型決定。
  如定義:char *p1;int *p2;double *p3;
  則p1++、p2++、p3++均表示三個(gè)指針向后移動了一個(gè)單元。但由于p1、p2、p3的基礎(chǔ)類型不同,決定了它們移動的字節(jié)數(shù)有所區(qū)別,p1指針后移了1個(gè)字節(jié),p2指針后移了4個(gè)字節(jié),p3指針后移了8個(gè)字節(jié)。
  2指針與數(shù)組的關(guān)系及應(yīng)用
  由于數(shù)組元素在內(nèi)存中連續(xù)存放,因此利用指針對數(shù)組操作是非常方便的,只需控制指針前移或者后移便可以指向不同的數(shù)組元素。
  2.1指針與一維數(shù)組
  指針與數(shù)組這部分學(xué)習(xí)的難點(diǎn)在于:1)如何表示數(shù)組中某個(gè)元素的地址;2)如何將指針指向數(shù)組中的指定元素;3)如何使用“下標(biāo)法”或“指針法”引用數(shù)組元素。
  引用一維數(shù)組元素及其地址的方法有以下兩種——“下標(biāo)法”和“指針法”[1]。如表2、表3所示。在教學(xué)中,應(yīng)注意比較這兩種方法。如定義:
  int a[4]

景东| 扬州市| 西充县| 贡嘎县| 库车县| 苏尼特左旗| 靖江市| 宕昌县| 双流县| 高碑店市| 洪湖市| 宜丰县| 西和县| 怀仁县| 嘉兴市| 凤城市| 克什克腾旗| 苍梧县| 淮滨县| 岳西县| 太湖县| 河南省| 永康市| 太仆寺旗| 于田县| 金阳县| 邵武市| 托克逊县| 荥经县| 逊克县| 广安市| 鸡泽县| 万州区| 景谷| 朝阳县| 长泰县| 中山市| 宜君县| 云阳县| 都昌县| 绥滨县|