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

C語(yǔ)言指針教學(xué)中定義復(fù)雜數(shù)據(jù)結(jié)構(gòu)的作用及方法

2017-03-15 18:06:33肖澤
電腦與電信 2017年3期
關(guān)鍵詞:定義教學(xué)

肖澤

(清遠(yuǎn)市技師學(xué)院,廣東 清遠(yuǎn) 511517)

C語(yǔ)言指針教學(xué)中定義復(fù)雜數(shù)據(jù)結(jié)構(gòu)的作用及方法

肖澤

(清遠(yuǎn)市技師學(xué)院,廣東 清遠(yuǎn) 511517)

C語(yǔ)言指針教學(xué)一直是一個(gè)難點(diǎn),如何讓學(xué)生正確理解并掌握指針的定義及作用,是擺在所有教師面前的一道難題。特別是C語(yǔ)言中對(duì)復(fù)雜數(shù)據(jù)結(jié)構(gòu)的定義,更加抽象化且難以理解,給教學(xué)工作帶來了較大的阻力。本文通過分析指針的基本概念,對(duì)指針中的變量進(jìn)行詳細(xì)說明,幫助學(xué)生理解各種運(yùn)算符號(hào),為定義復(fù)雜數(shù)據(jù)結(jié)構(gòu)的教學(xué)提供了一些便捷。

C語(yǔ)言;指針教學(xué);復(fù)雜數(shù)據(jù)

1 引言

指針的優(yōu)點(diǎn)之一就是可以定義復(fù)雜的數(shù)據(jù)結(jié)構(gòu),使其簡(jiǎn)化、高效,便于使用。它不僅與數(shù)據(jù)的物理存儲(chǔ)緊密相關(guān),在其他程序中也有著非常廣泛的應(yīng)用,涉及的概念也十分復(fù)雜多樣,學(xué)生學(xué)習(xí)起來容易顯得力不從心。但是作為C語(yǔ)言的應(yīng)用核心,指針教學(xué)的質(zhì)量直接關(guān)系到學(xué)生對(duì)C語(yǔ)言的掌握程度。廣大教師一定要把它作為C語(yǔ)言課程教學(xué)的重點(diǎn)來進(jìn)行講授,這樣既能提高C語(yǔ)言的教學(xué)質(zhì)量,也可以為學(xué)生今后學(xué)習(xí)更加深?yuàn)W的計(jì)算機(jī)語(yǔ)言打下堅(jiān)實(shí)的基礎(chǔ)。

2 指針和指針變量的定義及作用

指針是存儲(chǔ)計(jì)算機(jī)內(nèi)存地址的變量,地址則是存儲(chǔ)單元中每個(gè)字節(jié)的唯一編號(hào)。舉例來說,如果在C語(yǔ)言中定義一個(gè)變量,那么程序在進(jìn)行編譯的時(shí)候就會(huì)給該變量分配若干字節(jié)的存儲(chǔ)空間,首個(gè)字節(jié)的編號(hào)就是該變量的地址;而這個(gè)地址,即首個(gè)字節(jié)的編號(hào),就是該變量的指針。如果在程序中專門用一個(gè)變量來存放另一個(gè)變量的指針,那么該變量又被稱為指針變量。通常在在教學(xué)中講述以上概念時(shí),會(huì)運(yùn)用一些比喻的手法來強(qiáng)化理論知識(shí)的形象,幫助學(xué)生理解這些概念。例如將學(xué)生宿舍樓比喻成計(jì)算機(jī)的存儲(chǔ)空間,其中每間宿舍都是一個(gè)存儲(chǔ)單元,學(xué)生相當(dāng)于存儲(chǔ)在其中的數(shù)據(jù),而房間號(hào)就是地址,那么房間號(hào)就是住在該宿舍中學(xué)生的指針。宿舍管理室則相當(dāng)于存儲(chǔ)指針的變量,對(duì)每間房間的號(hào)碼都進(jìn)行管理,那么宿舍管理室就是所有宿舍房間的指針變量。

設(shè)有三條C語(yǔ)句:int a,*p;a=7;p=&a;

第l條語(yǔ)句定義了整型變量a和指向整型的指針變量p,在C語(yǔ)言程序中,系統(tǒng)會(huì)根據(jù)該語(yǔ)句為a和p分配相應(yīng)的存儲(chǔ)空間;第2條語(yǔ)句是把整數(shù)7存儲(chǔ)到了變量a中;第3條語(yǔ)句是把變量a的地址存儲(chǔ)到變量p中;那么變量p就是變量a的指針變量。想要在系統(tǒng)中訪問變量a,查看其中存儲(chǔ)的內(nèi)容,可以通過兩種方法,一是直接訪問變量a,二是通過訪問指針變量p來間接訪問變量a。在教學(xué)時(shí),可以繼續(xù)運(yùn)用比喻的方法來解釋變量和指針變量的應(yīng)用,即直接訪問和間接訪問的過程。直接訪問即學(xué)生直接到相應(yīng)的房間內(nèi)找想要找的人,如同直接在系統(tǒng)中查找相應(yīng)數(shù)據(jù);間接訪問則是到宿舍管理室查詢所要找的房間號(hào)及學(xué)生名字,然后再去訪問對(duì)應(yīng)的房間和人。

3 定義復(fù)雜數(shù)據(jù)結(jié)構(gòu)的方法

3.1 定義基類型

在C語(yǔ)言中定義復(fù)雜數(shù)據(jù)結(jié)構(gòu)的第一步是定義指針變量,而定義指針變量的第一步就是定義基類型。常見的指針變量是由基類型和指針變量名組成的,指針變量的賦值要與基類型相匹配,即指針變量是專門存放基類型的變量的地址。

以該c語(yǔ)句為例:float a;int*p;p=&a;p=3000;

后面兩條語(yǔ)句就是錯(cuò)誤的,因?yàn)樗鼈兣c定義指針變量的原則相悖,即沒有定義基類型。在語(yǔ)言編輯程序中設(shè)置這樣的規(guī)定是有意義的,如果指針變量能夠隨意指向未經(jīng)定義的基類型,就會(huì)引起內(nèi)存區(qū)域的不確定變化,進(jìn)而導(dǎo)致程序崩潰;其次,定義基類型能夠?yàn)橹羔樳\(yùn)算提供支持。在指針運(yùn)算的過程中,經(jīng)常需要移動(dòng)指針來處理連續(xù)的存儲(chǔ)對(duì)象,例如數(shù)組元素;如果沒有定義基類型,在處理這類數(shù)據(jù)時(shí)同樣會(huì)引發(fā)程序崩潰。同時(shí),指針的移動(dòng)就是對(duì)指針變量進(jìn)行加減運(yùn)算而得到的,如果定義基類型,就會(huì)使運(yùn)算更加簡(jiǎn)潔統(tǒng)一。例如在程序中給指針變量加l,實(shí)際上指針變量增加的值并不一定是1,而是一個(gè)整數(shù)n,這個(gè)n指代數(shù)據(jù)在內(nèi)存空間中所占用的字節(jié)數(shù);想要確定n的值,就要定義基類型,即指針變量所指向的數(shù)據(jù)類型。而基類型數(shù)據(jù)對(duì)象的字節(jié)數(shù),又被稱為指針變量的步長(zhǎng),在一些簡(jiǎn)單的運(yùn)算中能夠起到精簡(jiǎn)運(yùn)算的目的;如果指針變量是函數(shù)類型,則其步長(zhǎng)在運(yùn)算中沒有意義。

3.2 理解運(yùn)算符

C語(yǔ)言與指針有關(guān)的運(yùn)算符主要有&、*和[],它們分別代表地址運(yùn)算符、指針運(yùn)算符和下標(biāo)運(yùn)算符,其中*和[]只在表達(dá)式中起運(yùn)算符作用,在指針變量定義中只能起到說明作用,沒有運(yùn)算符的作用,通常在定義指針變量時(shí)要在變量名之前加*來區(qū)別于普通變量。教師在講解的過程中要把重點(diǎn)放在指針操作上,讓學(xué)生在實(shí)踐中理解運(yùn)算符的作用。需要注意的是,在起運(yùn)算符作用的時(shí)候,&和*互為逆運(yùn)算,[]和*之間的關(guān)系可以用表達(dá)式p[i]=*(p+i)來表示。盡管&和*代表了地址運(yùn)算符和指針運(yùn)算符,讓程序在運(yùn)算中獲取變量的地址及指針?biāo)赶虻淖兞浚窃趯?shí)際操作中,這兩種運(yùn)算符還會(huì)引申出其他含義。

以如下語(yǔ)句為例,int c[3][4]={8,5,4,2,l,12,9,13,21,26,6,14};它定義了一個(gè)二維整型數(shù)組c,c是一個(gè)指針常量,也是該數(shù)組的數(shù)組名,代表數(shù)組c第0行的首個(gè)字節(jié)名稱,即常量地址,它指向的數(shù)據(jù)對(duì)象就是該二維數(shù)組的行。如果一個(gè)數(shù)組元素占用的字節(jié)數(shù)為2個(gè),那么該常量地址的步長(zhǎng)就是8。將運(yùn)算符&加到數(shù)組c前面,則表示無意義。因?yàn)閏是常量,它并沒有占用系統(tǒng)的內(nèi)存空間,自然就沒有地址;而運(yùn)算符&的含義是獲取地址,但是&c卻不能獲取到任何地址,自然也就無意義。如果在引申含義的層面上去理解&c,則有著不同的意義。通常認(rèn)為&的引申義是“使指針升級(jí)”,那么&c就不再是無意義,而是成為了一個(gè)指針常量,它指向的數(shù)據(jù)對(duì)象就是整個(gè)二維數(shù)組c,它還代表數(shù)組C的首個(gè)地址,其步長(zhǎng)為24。同樣的情況,*的引申義一般為“使指針降級(jí)”,*c也成為了一個(gè)指針常量,它指向的數(shù)據(jù)對(duì)象是該二維數(shù)組中的數(shù)組元素,它代表了數(shù)組C第0行第0列元素的地址,其步長(zhǎng)為2。

3.3 定義復(fù)雜數(shù)據(jù)結(jié)構(gòu)

指針可以定義復(fù)雜的數(shù)據(jù)結(jié)構(gòu),并說明復(fù)雜數(shù)據(jù)中所包含的各種對(duì)象,例如含有復(fù)雜元素的數(shù)組、復(fù)雜函數(shù)的指針等,從而滿足應(yīng)用程序在編寫過程中對(duì)復(fù)雜對(duì)象的簡(jiǎn)潔化描述,提高編寫效率。需要注意的是,*和[]只能在表達(dá)式中起運(yùn)算符的作用,這在前面也提到過,在指針定義中它們只是簡(jiǎn)單的指針標(biāo)志和數(shù)組標(biāo)志。而小括號(hào)()作為優(yōu)先級(jí)僅次于用戶標(biāo)識(shí)符的對(duì)象,也需要針對(duì)不同的情況對(duì)其含義進(jìn)行區(qū)分,有時(shí)它是函數(shù)標(biāo)志,有時(shí)則只是一般的括號(hào)運(yùn)算符。如果()挨著用戶標(biāo)識(shí)符,或者挨著一個(gè)被小括號(hào)括起來的字符串,那么它就是一個(gè)函數(shù)標(biāo)志;如果()內(nèi)部為空,或者為一個(gè)形參表列,那么它也是一個(gè)函數(shù)標(biāo)志,其他情況通常認(rèn)為是普通的括號(hào)運(yùn)算符。

定義復(fù)雜數(shù)據(jù)結(jié)構(gòu)的實(shí)質(zhì)就是說明數(shù)據(jù)中每個(gè)部分的對(duì)象及其作用,一般都是從用戶標(biāo)識(shí)符開始,按照優(yōu)先級(jí)順序,從高到低依次為括號(hào)運(yùn)算符、函數(shù)標(biāo)志、指針標(biāo)志(即*)和數(shù)組標(biāo)志(即[])來逐個(gè)說明。以下面函數(shù)為例。

float(*x(int))[6];解釋要按照優(yōu)先級(jí)順序及其結(jié)合性順序,x(int):x是一個(gè)函數(shù),該函數(shù)包含了一個(gè)整型形參;(*x (int)):x是一個(gè)函數(shù),該函數(shù)包含了一個(gè)整型形參,其返回值為指針,即x是指針函數(shù);float(*x(int))[6]:x是一個(gè)函數(shù),該函數(shù)包含了一個(gè)整型形參,其返回值為指針,指向了包含6個(gè)元素的一維數(shù)組,該一維數(shù)組的每個(gè)元素都是一個(gè)實(shí)型變量。

通過該舉例可以看出,使用指針以后能夠極大地簡(jiǎn)化復(fù)雜的數(shù)據(jù)結(jié)構(gòu),讓函數(shù)的層次和順序十分鮮明易懂。作為比較,可以使用C語(yǔ)言中的typedef語(yǔ)句來定義該函數(shù),以便學(xué)生更好地理解其中的不同,其形式為:

{typedef float ARRAY[6];

typedef ARRAY*POINTERl;

POINTERl x(int);}

再有數(shù)組int(*f[6])(int,int);解釋同樣要按照順序,f[6]:f是一個(gè)數(shù)組,該數(shù)組包含了6個(gè)元素;(*f[6]):f是一個(gè)數(shù)組,該數(shù)組包含了6個(gè)元素,每個(gè)元素都是一個(gè)指針變量;int(*f [6])(int,int):f是一個(gè)數(shù)組,該數(shù)組包含了6個(gè)元素,每個(gè)元素都是一個(gè)指針變量,指向了一個(gè)函數(shù),該函數(shù)的原型為int函數(shù)名是(int,int)。

同樣用typedef語(yǔ)句來定義該數(shù)組,可以得到:

{typedef int(*POINTER2)(int,int);

POINTER2 f[6];}

4 總結(jié)

指針是C語(yǔ)言中的精華,掌握了指針的定義和方法,能夠有效地簡(jiǎn)化復(fù)雜的數(shù)據(jù)結(jié)構(gòu),提高編寫的效率和正確率。但指針也是學(xué)好C語(yǔ)言的一道難關(guān),因?yàn)槠涓拍顝?fù)雜多變、使用方法靈活多樣,很多學(xué)生在學(xué)習(xí)的過程中容易產(chǎn)生畏難情緒。這就要求教師在教學(xué)中要根據(jù)由淺入深的原則,做好基礎(chǔ)知識(shí)點(diǎn)的講授,然后結(jié)合實(shí)踐范例,引入一些難點(diǎn)和重點(diǎn),并通過反復(fù)練習(xí)來達(dá)到熟練掌握的目的。本文所討論的關(guān)于指針的概念及定義復(fù)雜數(shù)據(jù)結(jié)構(gòu)的方法,仍然十分淺顯,對(duì)于實(shí)際教學(xué)的幫助略顯不足。僅希望能夠起到一些拋磚引玉的作用,為今后的C語(yǔ)言指針教學(xué)積累一些有益的經(jīng)驗(yàn)。

[1]楊天明.C語(yǔ)言指針教學(xué)難點(diǎn)探析[J].中國(guó)科教創(chuàng)新導(dǎo)刊,2014 (8):137-138.

[2]吳斌.C語(yǔ)言指針的教學(xué)[J].安徽職業(yè)技術(shù)學(xué)院學(xué)報(bào),2004,3 (3):67-69.

The Function and Method of Complex Data Structures Definition in C Language Pointer Teaching

Xiao Ze
(Qingyuan City Technician Institute,Qingyuan 511517,Guangdong)

C language pointer teaching has always been difficult.It’s a difficult problem faced by the teachers that how to let students understand the definition and role of pointer correctly.Especially,the definition of complex data structures in C language is more abstract and difficult to understand,bring great resistance to the teaching work.This article analyzes the basic concept of pointer,and elaborates the variable of pointer in detail,helping students understand the operation symbols and providing convenient for the teaching of defining complex data structure.

C language;the pointer teaching;complex data

TP312-4;G642.4

A

1008-6609(2017)03-0067-02

肖澤(1980-),男,江西吉安人,本科,計(jì)算機(jī)一級(jí)實(shí)習(xí)指導(dǎo),研究方向?yàn)槁殬I(yè)教育。

猜你喜歡
定義教學(xué)
永遠(yuǎn)不要用“起點(diǎn)”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
微課讓高中數(shù)學(xué)教學(xué)更高效
甘肅教育(2020年14期)2020-09-11 07:57:50
定義“風(fēng)格”
如何讓高中生物教學(xué)變得生動(dòng)有趣
甘肅教育(2020年12期)2020-04-13 06:25:34
“自我診斷表”在高中數(shù)學(xué)教學(xué)中的應(yīng)用
東方教育(2017年19期)2017-12-05 15:14:48
對(duì)外漢語(yǔ)教學(xué)中“想”和“要”的比較
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
修辭學(xué)的重大定義
跨越式跳高的教學(xué)絕招
體育師友(2013年6期)2013-03-11 18:52:18
山的定義
主站蜘蛛池模板: 超清人妻系列无码专区| 国产福利微拍精品一区二区| 久久免费精品琪琪| 亚洲欧美日韩中文字幕一区二区三区| 91精品专区| 无码精品国产VA在线观看DVD| 欧美一区中文字幕| 色噜噜狠狠狠综合曰曰曰| 精品国产成人高清在线| 毛片在线播放a| 久久男人资源站| 亚洲va在线观看| 91精品国产情侣高潮露脸| 国产性生交xxxxx免费| 麻豆精品在线视频| 久久久久久尹人网香蕉 | 国产精品19p| 波多野结衣中文字幕久久| 91小视频在线播放| 久久这里只精品国产99热8| 91免费片| 亚洲an第二区国产精品| 午夜不卡视频| 国产亚洲视频中文字幕视频| 亚洲欧美一区二区三区蜜芽| 青青操视频在线| 国产成人综合在线观看| 免费在线观看av| 99热免费在线| 国产乱肥老妇精品视频| аⅴ资源中文在线天堂| 女人18毛片一级毛片在线 | 日本一区二区三区精品视频| 天堂va亚洲va欧美va国产| 色综合久久88| 强奷白丝美女在线观看| 丰满人妻久久中文字幕| 国产精品3p视频| 九九九国产| 国产一区成人| 久久精品波多野结衣| 国产成人精品一区二区秒拍1o| 色综合天天娱乐综合网| 国产精品久久精品| 天堂网国产| 91精品日韩人妻无码久久| A级毛片无码久久精品免费| 综合久久久久久久综合网| 国产免费黄| 中文字幕久久精品波多野结| 国产成人久久777777| 亚洲日韩在线满18点击进入| 又黄又爽视频好爽视频| 精品無碼一區在線觀看 | 国产91丝袜在线播放动漫| 免费毛片全部不收费的| 亚洲色无码专线精品观看| 东京热av无码电影一区二区| 国产主播一区二区三区| 国产成人精品2021欧美日韩| 亚洲人妖在线| 国产精品无码影视久久久久久久| 日韩成人免费网站| 国产凹凸视频在线观看| 真实国产乱子伦视频| 日韩欧美视频第一区在线观看| 91美女视频在线| 久久婷婷五月综合色一区二区| 国内精品免费| 国产免费a级片| 亚洲天堂福利视频| 国产精品欧美日本韩免费一区二区三区不卡| 欧美成人手机在线观看网址| 91精品国产麻豆国产自产在线| 国产成本人片免费a∨短片| 欧美成人A视频| 欧美人在线一区二区三区| 亚洲欧美另类日本| 久久久久九九精品影院| 熟女日韩精品2区| a毛片在线播放| 在线无码av一区二区三区|