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

C語言程序設計中的指針教學研究

2015-11-23 02:36:56韋純福李
大眾科技 2015年7期
關鍵詞:定義學生

韋純福李 波

(1.河南理工大學數學與信息科學學院,河南 焦作 454000;2.河南理工大學安全科學與工程學院,河南 焦作 454000)

C語言程序設計中的指針教學研究

韋純福1李 波2

(1.河南理工大學數學與信息科學學院,河南 焦作 454000;2.河南理工大學安全科學與工程學院,河南 焦作 454000)

指針是C語言程序設計的重要數據類型,亦是C語言的精華部分。但是,由于指針概念復雜,使用靈活,在實際的教學過程中學生常常感到難以理解。文章擬從指針的基本概念入手,分析函數指針、指針函數、數組指針及指針數組的區別與聯系,通過類比分析方法闡明該部分內容,以期能夠幫助學生深入理解指針原理及其應用。

C語言;指針數組;數組指針;函數指針;指針函數

1 引言

C語言是一種面向過程的計算機高級語言且在國際上廣泛使用,其歷史悠久,發展相當迅速。指針是在C 語言程序設計中一個重要的概念,鑒于指針概念較復雜,使用方式多樣,學生通常感到難以理解掌握。因此,學習C語言時應遵循序漸進的方法,從指針的概念入手,理解指針的內涵,指針變量的定義與賦值方式,以及它與普通變量的差別與聯系。指針是C 語言程序設計學習的重點與難點之一,學生不能掌握指針該知識點,那么就很難學好C 語言。加之指針數據類型較多,書寫格式容易發生混淆。比如數組指針與指針數組,函數指針與指針函數等。這些容易發生混淆的概念與定義為學生理解指針帶來了極大的困難。學生若能熟練掌握指針、靈活運用指針,則可編寫出高效、緊湊、簡潔的程序。眾多教育工作者[1,2]對指針教學進行了積極的探索。本文基于譚浩強與賈宗璞等[3,4]研究者先期研究成果,從C語言的基本概念與定義出發,結合學生學習過程中容易發生混淆的指針教學內容,初步探索C語言教學中指針教學的相關問題,并把容易混淆的的指針教學知識點進行類比分析,以期對C語言的初學者有所幫助。

2 指針的基本概念

學生學習指針應首先掌握其基本概念與定義。基于地址的概念再向學生介紹指針的定義,以幫助學生對指針的理解。如果告訴學生指針即地址、地址即指針,在程序的執行過程中,變量、函數、數組等都存放在計算機的內存單元中,內存中的存儲單元都有對應的地址,這樣更能幫助學生快速理解指針。需要向學生進一步闡述使用變量、數組、函數既可以直接訪問,又可以利用其存儲單元的地址進行間接地訪問,這種間接訪問便可以借助指針來完成的。學習指針復雜的使用形式之前,需要讓學生充分理解指針與變量。

2.1地址和指針的理解

依據馮.諾依曼提出的“存儲程序”的電子計算機的工作原理,數據與程序需要裝入內存后方可進行處理。計算機內存是以字節為基本單位的一片連續存儲區域,每個字節都有一個唯一的編號,該編號稱為內存的“地址”。C語言提供了一種通過地址間接存取的方式,先用一種特殊的變量存放要訪問變量的地址,訪問時先從該特殊的變量中取出需要訪問變量的地址值,再依據該地址值去訪問對應的存儲單元。由于地址就像要訪問存儲單元的指示標,于是形象地稱地址為指針,要訪問的存儲單元也形象地稱為“指針所指向的對象”。

2.2指針變量的理解

向學生介紹此部分內容時,應參照普通變量的定義形式,賦值方式,以便幫助學生快速地理解指針變量的定義及使用形式。指針變量也需要先定義后使用,其定義形式如下:

基類型 *指針變量名1,*指針變量名2,…;

定義中的“*”用來標示所定義的變量是一個指針變量,這里的“*”不能省略;“基類型”表示該指針變量所指向對象的數據類型,其可以為任意數據類型。例如:

float *pa; /*pa是指向float型變量的指針變量*/

int *pb; /*pb是指向int型變量的指針變量*/

指針變量僅能指向預先定義時基類型所規定的類型變量,而不能指向規定之外的其他類型的變量。由于指針是內存地址,指針變量只能用來存放指針。指針變量同普通變量一樣,同樣也具有普通變量的三要素:變量類型、變量名和變量值。

3 指針數組與數組指針的理解

筆者在指針數組與數組指針的教學過程中,發現學生在理解這部分內容時容易發生混淆。為此,通常將這兩部分內容放在一起進行類比分析講解。

3.1指針數組

將指針數組和普通數組進行類比分析講解,不同在于普通數組元素是普通類型的數據,而指針數組的元素都是指針。由此引出指針數組的定義,如果一個數組的元素值為指針,則稱這個數組為指針數組。指針數組各元素具有相同的基類型,是一組有序的指針的集合。指針數組的一般定義形式為:

類型標識符 *數組名[數組長度]

例如: float *pa[5];

表示定義了一個包含5個數組元素的指針數組pa,每個元素都是一個指向實型變量的指針。為了加深學生對指針數組的理解,下面列舉筆者在課堂教學過程中經常用到的一個指針數組的例子及講解方法。

程序的運行結果為:

筆者講述此例題時,通常會預留幾分鐘時間給學生,讓學生先閱讀分析此程序的運行結果。然后與VC++編譯運行之后的結果相對照。筆者在進一步講解pa是一個指針數組,它的三個元素分別指向靜態二維數組a的三行等。

3.2數組指針

數組指針變量定義形式:

類型標識符 (*數組名)[數組長度]

例如: float (*pa)[5];

告訴學生在指針數組的基礎上,如果“*數組名”的兩邊加上括號,其意義則發生改變。方括號“[5]”前面(*pa)不是合法的標識符,由此判定(*pa)[5]不是數組。而定義中有*pa,則pa為指針變量,后面又有方括號“[5]”,即可判定是和數組有關的指針變量。它表示了一個指針變量pa, pa指向的對象是包含5個float型元素的一位數組。進一步通過算例讓學生明白其與指針數組的區別。

程序的運行結果為:

首先引導學生讀懂該程序,以兩種不同的方式輸出二維數組的元素,其中包括數組指針即指向二維數組行的指針。其次,將其與指針數組的例子進行對比分析,以加深學生對數組指針與指針數組的理解。

4 函數指針與指針函數的理解

在指針教學過程中,除指針數組與數組指針之外,筆者發現函數指針與指針函數是學生又一對容易發生混淆的知識點。雖然字面意思相近,但是用法卻相距甚遠,為此,筆者經常采用類比分析講解此部分內容。

4.1函數指針

程序裝入內存以后,每一個函數都要占用一段連續的內存區域,而函數的名稱即是這段連續區域的首地址(又稱為函數的入口地址)。在C語言程序設計中,能夠把一個函數的首地址賦值給一個指針變量,使其指向該函數,即可通過這個指針變量調用該函數。習慣上把這種指向函數的指針變量稱為“函數指針變量”,簡稱函數指針。函數指針變量的一般定義形式為:

類型標識符 (*指針變量名)(類型標識符1,類型標識符1…);

定義中的第一個“類型標識符”表示了被指函數返回值的類型,其余類型標識符用來說明所指向函數參數類型和參數個數,通常括號內的類型標識符要與所指函數參數類型相對應。若所指向的函數沒有形式參數,這一對圓括號也不可以省略。比如:

語句中的pa是一個指向函數的指針變量,其所指向的函數返回值必須為整型,且有兩個參數,分別為整型和指向整型的指針。為進一步向學生闡述清楚函數指針的內涵,筆者通常采用如下程序進行說明。

程序中 pmax是一個指針變量,指向返回值為整型的函數,通過pmax調用max函數,需要向學生闡明函數指針變量不能進行相應的算術運算,這一點有別于數組指針不同,數組指針可以通過指針變量的加減進行移動,而函數指針的移動則無意義。提醒學生需要注意“*pmax”兩邊的括號不能省略,此處的“*”僅僅是一種指示符,不應理解為指針運算符。

4.2指針函數

向學生闡明指針函數的字面意思,指針用來修飾函數,該函數不同于普通函數,如函數返回值為整型數據、實型數據的常稱為普通函數。進一步說明函數類型是指函數返回值的類型。C語言程序設計中允許一個函數的返回值為一個地址(即指針),并把這種返回指針值的函數稱作指針函數。指針函數的一般定義形式為:

定義中,函數名稱之前加了“*”,且無括號,表明該函數函數返回值是一個指針,即指針函數。其中類型標識符表示返回指針值的基類型。例如:

上述表示pf為指針函數,其返回值的指針指向一個實型變量。可通過如下程序進行進一步說明。

上述程序把兩個形式參數中較大的那個數的地址作為函數值返回。需要注意:函數指針與指針函數表示了兩種完全不同的含義。float *fun( )是一個函數聲明,fun表示一個指針函數,其返回值是一個指向實型數據的指針,“*fun”的兩邊沒有括號。而int (*pmax )( )則為一個變量聲明,表示pmax 是一個指向函數入口地址的指針變量,該函數返回值為整型數據,“pmax”兩邊不能缺少圓括號。

5 結論

根據C語言初學者在學習指針時常常遇到的難題以及容易發生混淆的概念,筆者分析總結了地址、指針、指針變量等的基本概念及區別與聯系;進一步類比分析了指針部分容易混淆的指針數組、數組指針、函數指針、指針函數等內容,分別通過程序說明的他們的定義、使用形式及其區別。經過分析與比較指針教學知識點之間的區別與聯系, 既能激發學生學習指針這部分內容的動力,又能提高他們的自學C語言的能力。系統、靈活地掌握指針可以提高學生的編程能力,并且能夠提高他們學習C語言的自信心。經過反復的教學實踐與總結,筆者總結出的通過類比分析教學方法學習指針,能夠有效降低教學難度,達到了理想的教學效果。

[1] 趙忠孝,楊亞蕾.對C語言指針教學問題的探究[J].計算機教育,2009,(19):72-74.

[2] 李俊萩,趙家剛,張晴暉.C語言指針教學中的知識點分析與總結[J].計算機教育,2011,(8):55-60.

[3] 譚浩強.C語言程序設計[M].北京:清華大學出版社,2000.

[4] 賈宗璞,許合利.C語言程序設計[M].北京:人民郵電出版社,2011.

Research on pointer teaching of C language

Pointer is an important data type of C language programming and is also the essence. College students often feel difficult to understand pointer in the actual teaching process, because of complex concept and flexible use of pointer. Distinction and connection among pointer array and array pointer, function pointer and pointer function will be studied based on basic concepts of pointer, they will be clarified by analogy analysis method, in order to help students understand the principle and application of pointer.

C language;pointer array;array pointer;function pointer;pointer function

G64

A

1008-1151(2015)07-0136-03

2015-06-10

韋純福(1979-),男,河南理工大學數學與信息科學學院講師,博士,從事智能信息處理、礦山信息化的教學與研究工作。

猜你喜歡
定義學生
快把我哥帶走
永遠不要用“起點”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
定義“風格”
《李學生》定檔8月28日
電影(2018年9期)2018-11-14 06:57:21
趕不走的學生
學生寫話
學生寫的話
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
山的定義
公務員文萃(2013年5期)2013-03-11 16:08:37
主站蜘蛛池模板: 欧美成人免费| 国产精品青青| 国产精品视频观看裸模| 亚洲swag精品自拍一区| 波多野结衣的av一区二区三区| 99久久精品无码专区免费| 美女内射视频WWW网站午夜| 人妻无码中文字幕一区二区三区| 999精品视频在线| 黄片一区二区三区| 亚洲中文无码h在线观看| 日本精品αv中文字幕| 被公侵犯人妻少妇一区二区三区 | 全午夜免费一级毛片| 精品国产成人高清在线| 狠狠躁天天躁夜夜躁婷婷| 国产精品片在线观看手机版| 熟妇丰满人妻| 成人综合网址| 国产精品人人做人人爽人人添| 久久精品这里只有国产中文精品| 久久青草视频| 四虎影视无码永久免费观看| 久久久精品无码一区二区三区| 国产欧美日韩91| 亚洲高清中文字幕在线看不卡| 国产成人亚洲精品蜜芽影院| 日韩免费毛片| 日韩在线永久免费播放| 99在线视频精品| 九九久久99精品| 成人av专区精品无码国产| 免费人成黄页在线观看国产| 熟妇丰满人妻av无码区| 色丁丁毛片在线观看| 免费人成视网站在线不卡 | h网站在线播放| 四虎AV麻豆| 四虎影视8848永久精品| 亚洲欧美成人综合| 久久婷婷六月| 97成人在线视频| 久久精品欧美一区二区| 香蕉国产精品视频| 中文天堂在线视频| 无遮挡国产高潮视频免费观看| 国产精品视频a| 国产乱子伦无码精品小说 | 一区二区日韩国产精久久| 在线视频一区二区三区不卡| 国产午夜看片| 免费福利视频网站| 亚洲精品少妇熟女| 熟女视频91| 色偷偷av男人的天堂不卡| 欧美亚洲一二三区| 国产精品成人一区二区不卡 | 狼友视频国产精品首页| 亚洲国产天堂在线观看| 亚洲丝袜中文字幕| 久热中文字幕在线| 国产精品久久精品| 精品久久国产综合精麻豆| 丰满少妇αⅴ无码区| 国产福利2021最新在线观看| 国产91在线|日本| 无码一区18禁| 91精品啪在线观看国产60岁 | 日韩精品专区免费无码aⅴ| 久久中文电影| 成人在线天堂| 72种姿势欧美久久久久大黄蕉| 亚洲大尺度在线| 91福利在线观看视频| 欧美日韩午夜| 一本无码在线观看| 精品无码视频在线观看| 1024你懂的国产精品| 99er精品视频| 色综合激情网| 免费亚洲成人| 亚洲国内精品自在自线官|