• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      C語言指針簡化教學(xué)思考

      2015-12-07 19:06:43鄧麗萍
      教育教學(xué)論壇 2015年45期
      關(guān)鍵詞:數(shù)組指針教學(xué)

      鄧麗萍

      摘要:《C語言程序設(shè)計》是學(xué)生剛進入大學(xué)所接觸的第一門編程語言,加上課時有限,大多數(shù)學(xué)生都覺得很難、很抽象不好學(xué),本文作者系統(tǒng)討論了如何用最短的時間使學(xué)生掌握好指針的應(yīng)用問題。經(jīng)驗表明,在講解輸入函數(shù)的時候便介紹計算機內(nèi)部的存儲和變量地址的含義,在數(shù)組應(yīng)用時重點講解數(shù)組名表示數(shù)組首地址含義,這都將為指針的講解奠下基礎(chǔ),在講解指針時,運用一些簡單經(jīng)典的例子來涵蓋指針的所有知識,并取得了較好的效果。

      關(guān)鍵詞:C語言;數(shù)組;教學(xué);指針

      中圖分類號:G718.5 ? ? 文獻標(biāo)志碼:A ? ? 文章編號:1674-9324(2015)45-0228-02

      在C語言的教學(xué)中,“指針”這一部分內(nèi)容一直是C語言的教學(xué)重點和難點,直接影響學(xué)生對后續(xù)課程的學(xué)習(xí)和把握[1-3]。作為軟件開發(fā)入門課程,絕大多數(shù)時間是在講條件、循環(huán)、數(shù)組、函數(shù),而指針內(nèi)容卻是省、國家計算機二級、程序員等考試的必考內(nèi)容。為了在最短的時間內(nèi)達到較好的教學(xué)效果。筆者從多年的教學(xué)經(jīng)驗認(rèn)為C語言的指針教學(xué)應(yīng)該注意以下幾點:

      一、輸入函數(shù)scanf()和數(shù)組中地址的應(yīng)用

      所有的書本上都有介紹scanf(格式控制字符串,輸入項列表),此函數(shù)的輸入項列表要用“&”加變量名,要將所輸入的內(nèi)容放入變量的地址中,其中格式控制串中如果有普通字符也要輸入普通字符,且有很多輸入后不能正確讀取的情況,初學(xué)者往往感到非常困惑難以理解。其實,連續(xù)定義的多個變量在內(nèi)存中也是占用連續(xù)的內(nèi)存單元,只是不同的數(shù)據(jù)類型所占的字節(jié)不同,程序在運行過程中遇到第一個scanf()函數(shù)時,將要求用戶從鍵盤上按要求輸入內(nèi)容,所有輸入的內(nèi)容都將先放入緩沖區(qū)且你可以輸入很多內(nèi)容,輸入完成后再按scanf的格式控制字符串的格式來存入到變量的地址中,一旦輸入不合法,則認(rèn)為輸入結(jié)束,后面的變量將取不到值。如:scanf(“%d:%d”,&a,&b);若輸入時你輸入3,4↙其中a的值為3,輸入格式串中本來要求你輸入的是“:”而你輸入的是“,”,明顯不合法,則scanf函數(shù)輸入結(jié)束,后面的變量b將取不到值。同時這也很好解釋了若程序中有多個scanf函數(shù)時,為了保證每次輸入都有效,則應(yīng)該在輸入函數(shù)前加一個清空緩存函數(shù)fflush(stdin)。

      數(shù)組名代表的是數(shù)組的首地址,所以在scanf()函數(shù)中以”%s”為格式串所對應(yīng)輸入項列表不需要加“&”。如:char str[20];

      scanf(“%s”,str);/*將輸入的內(nèi)容存儲到從數(shù)組首地址開始的地址中*/

      printf(“%s”,str);/*從數(shù)組的首地址開始輸出字符數(shù)組的內(nèi)容*/。

      這些內(nèi)容都與計算機的實際存儲有關(guān)(即和地址有關(guān))。

      二、指針

      指針就是地址。其實前面我們在講解輸入輸出函數(shù)和數(shù)組時,我們就介紹了一些有關(guān)地址的應(yīng)用。一聽自己已經(jīng)用過且有所接觸了,學(xué)生也就不會感到太畏懼了。再加上時間有限,我們要言簡意賅地說明指針的用法。

      1.指針的概念。指針就是內(nèi)存地址。這里首先要區(qū)分三個比較接近的概念:名稱、地址和內(nèi)容(值)。名稱是給內(nèi)存空間取的一個容易記憶的名字;內(nèi)存中每個字節(jié)都有一個編號,就是“地址”;在地址所對應(yīng)的內(nèi)存單元中存放的數(shù)值即為內(nèi)容或值。

      為了幫助讀者理解三者之間的聯(lián)系與區(qū)別,我們不妨打個比方,有一座教師辦公樓,各房間都有一個編號,如101,102,…,201,202,…。一旦各房間被分配給相應(yīng)的職能部門后,各房間就掛起了部門名稱:如電子系、計算機系、環(huán)境工程系等,假如電子系被分配在101房間,我們要找到電子系的教師(內(nèi)容),可以去找電子系(按名稱找),也可以去找101房間(按地址找)。類似地,對一個存儲空間的訪問既可以指出它的名稱,也可以指出它的地址。

      在C語言中,如果變量p中的內(nèi)容是另一個變量i的地址,則稱變量p指向變量i,或稱p是指向變量i的指針變量,形象地用圖1所示的箭頭表示。

      由此可以得出結(jié)論:變量的指針即為變量的地址,而存放其他變量地址的變量是指針變量。

      指針變量是一種變量,因而也具有變量的三個要素,但它是一種特殊的變量,其特殊性表現(xiàn)在它的類型取值上。具體而言:①變量名:與一般的變量命名規(guī)則相同。②變量的值:是某個變量的內(nèi)存地址。③變量的類型:主要是其指向的變量的類型。

      2.指針指向簡單變量。

      如:int a=100,*p;/*指針變量的定義*/

      p=&a;/*指針變量的賦值*/

      *p=200;/*指針變量的應(yīng)用*/

      printf(“%d”,a);則輸出值為200。

      在此我們要理解指針一旦定義且指向了一簡單變量,除定義和初始化時的*p,其他的*p等價于它所指向的簡單變量(即這里的*p<=>a),p(指針)等價于簡單變量的地址(即這里的p<=>&a)。上面的輸出語句可以變?yōu)椋簆rintf(“%d”,*p)。

      3.指針指向數(shù)組。

      (1)指針指向一維數(shù)組。

      如:int a[5]={10,20,30,40,50},*p=a;

      p++;

      printf(“%d,%d,%d”,*p,*(p+2),*p++);則輸出結(jié)果為:30,50,20

      以上是指針指向一維數(shù)組的基本應(yīng)用,首先我們要理解有關(guān)指針的運算。

      &:取地址運算符[5]。

      *:指針運算符(間址訪問運算符),取指針?biāo)赶虻闹?,若所指向二維數(shù)組則表示離取值進了一步。

      ++:算術(shù)運算符,表示指針往下或右移一個單位(其中這個單位和具體的數(shù)據(jù)類型有關(guān),如果是整型數(shù)一個單位就指2個字節(jié),實型指4個字節(jié))。

      --:算術(shù)運算符,表示指針往上或左移一個單位。

      若定義了一個指針指向了一個一維數(shù)組,則p<=>a的使用(原來的a[i],也可以用p[i]表示,*p<=>*a),即*(p+i)<=>a[i] <=>p[i] <=>*(a+i)。但要注意p和a同為地址它們是有區(qū)別的,p為變量地址,而a是常量地址。有p++而不能用a++。

      (2)指針指向二維數(shù)組。對于指針指向二維數(shù)組,要理解行地址和列地址的含義(*運算符能實現(xiàn)行地址向列地址的轉(zhuǎn)換)再加上一維數(shù)組中的等價關(guān)系,能理解下面的二維數(shù)組的指針表示形式表即可。

      (3)數(shù)組指針與指針數(shù)組的含義。前者是指針,后者是數(shù)組。定義格式:僅差一對圓括號。①指向一維數(shù)組的指針。假設(shè)有定義語句:int (*p)[4];②指針數(shù)組。假設(shè)有定義語句:int *p[4];

      (4)應(yīng)用場合:前者是一個指針,后者是多個指針。①指向一維數(shù)組的指針。一般將一個二維數(shù)組名賦值給一個指向一維數(shù)組的指針,來訪問二維數(shù)組中的某一行。②指針數(shù)組。適合存放若干個字符串,使字符串的處理更加方便靈活。例如:

      char ?*menu1[]={"Copy","Cut","Paste","Delete"};

      char ?menu2[4][7]={"Copy","Cut","Paste","Delete"};

      用字符指針數(shù)組處理字符串不僅可以節(jié)省內(nèi)存,還可以提高運行效率。

      4.指針指向函數(shù)。

      (1)指針作為函數(shù)的參數(shù)。

      其中左邊交換完后,能傳遞給實參,因為它是指針?biāo)赶虻闹蛋l(fā)生交換,而右邊只是指針的指向發(fā)生改變原本值未發(fā)生交換。

      (2)指針函數(shù)與函數(shù)指針。這是兩個完全不同的概念,前者是函數(shù),后者是指針。

      a定義格式:僅差一對圓括號。

      ①指針函數(shù)。假設(shè)有定義語句:

      int ?*fp(int x,int y);

      ②指向函數(shù)的指針(函數(shù)指針)。假設(shè)有定義語句:

      int ?(*fp)(int x,int y);

      b應(yīng)用場合:前者是一個函數(shù),只是函數(shù)的返回值是指針;后者是一個指向函數(shù)的指針,通過這個指針可以間接地調(diào)用所指向的函數(shù)。

      三、總結(jié)

      本文探討了指針教學(xué)中,通過截取最基本且最重要的知識來解析其應(yīng)用問題,目的在于使學(xué)生在較短的時間內(nèi)掌握其基本知識,預(yù)計可作為指針教學(xué)的有效方案之一。

      參考文獻:

      [1]管銀枝.C語言程序設(shè)計實例教程[M].北京:人民郵電出版社,2011.

      [2]譚浩強.C程序設(shè)計(第二版)[M].北京:清華大學(xué)出版社,2001.

      [3]白羽.C語言實用教程[M].北京:電子工業(yè)出版社,2009.

      猜你喜歡
      數(shù)組指針教學(xué)
      JAVA稀疏矩陣算法
      電腦報(2022年13期)2022-04-12 00:32:38
      微課讓高中數(shù)學(xué)教學(xué)更高效
      甘肅教育(2020年14期)2020-09-11 07:57:50
      JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
      電腦報(2020年24期)2020-07-15 06:12:41
      偷指針的人
      娃娃畫報(2019年5期)2019-06-17 16:58:10
      “自我診斷表”在高中數(shù)學(xué)教學(xué)中的應(yīng)用
      東方教育(2017年19期)2017-12-05 15:14:48
      為什么表的指針都按照順時針方向轉(zhuǎn)動
      對外漢語教學(xué)中“想”和“要”的比較
      尋找勾股數(shù)組的歷程
      基于改進Hough變換和BP網(wǎng)絡(luò)的指針儀表識別
      電測與儀表(2015年5期)2015-04-09 11:30:42
      ARM Cortex—MO/MO+單片機的指針變量替換方法
      大关县| 定安县| 临澧县| 古田县| 杭州市| 灵寿县| 靖安县| 门头沟区| 宁城县| 黄龙县| 浏阳市| 宜兴市| 乐亭县| 富源县| 邳州市| 福鼎市| 曲水县| 南通市| 晋宁县| 余江县| 营山县| 城步| 达日县| 霍山县| 平邑县| 板桥市| 大安市| 巴中市| 开鲁县| 金平| 宜昌市| 林口县| 获嘉县| 平度市| 武川县| 冷水江市| 永安市| 永济市| 屯门区| 阿拉尔市| 中西区|