亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        指針教學(xué)實(shí)踐

        2013-04-23 03:03:18劉井蓮趙衛(wèi)績馬春華
        綏化學(xué)院學(xué)報(bào) 2013年3期
        關(guān)鍵詞:數(shù)組指針指向

        劉井蓮 趙衛(wèi)績 馬春華

        (綏化學(xué)院 黑龍江綏化 152061)

        一、序言

        指針是C語言的一個(gè)重要概念,在C語言的教學(xué)中,能否正確理解和使用指針是衡量學(xué)生是否掌握C語言程序設(shè)計(jì)的一個(gè)重要標(biāo)志,也影響學(xué)生在后續(xù)課程《數(shù)據(jù)結(jié)構(gòu)》和《C++程序設(shè)計(jì)》等課程的學(xué)習(xí)。每一個(gè)學(xué)習(xí)C語言的人,如果不會(huì)指針,就沒有真正掌握C語言。但對(duì)于初學(xué)者來說,指針概念不易于理解,不易掌握。因此關(guān)于C語言指針的教學(xué)方法及相關(guān)教學(xué)研究得到了較多關(guān)注[1~3],并提出了很多好的教學(xué)方法。基于此,針對(duì)我院C語言學(xué)習(xí)情況,結(jié)合多年C語言教學(xué)經(jīng)驗(yàn),在深入探討C語言中循環(huán)和函數(shù)核心知識(shí)點(diǎn)問題的基礎(chǔ)上[4~5],從指針的教學(xué)的導(dǎo)入、指針概念運(yùn)算初始化幾個(gè)方面對(duì)C語言指針進(jìn)行了分析和探討,并結(jié)合與數(shù)組和函數(shù)的關(guān)系進(jìn)行了深入的研究分析,使學(xué)生很快進(jìn)入到C語言程序設(shè)計(jì)中來,為數(shù)據(jù)結(jié)構(gòu)、C++等后續(xù)課程的的學(xué)習(xí)奠定了堅(jiān)實(shí)的基礎(chǔ)。

        二、導(dǎo)入

        在前面學(xué)習(xí)中,數(shù)據(jù)分為常量和變量,變量的值是可以改變的,而常量是一個(gè)具體的值。那么變量在內(nèi)存中是如何存儲(chǔ)的、如何讀取的呢?如果在程序中定義了一個(gè)變量,例如int a;在對(duì)程序編譯時(shí),系統(tǒng)會(huì)在內(nèi)存中為變量a分配4個(gè)字節(jié)的內(nèi)存空間。內(nèi)存區(qū)每個(gè)字節(jié)都有一個(gè)編號(hào),這就是地址。而系統(tǒng)是通過地址找到對(duì)應(yīng)的變量單元,例如在C語言中為變量a輸入值,代碼是:scanf(“%d”,&a),“&”是取地址符號(hào),處理過程是在“int a;”之后系統(tǒng)已經(jīng)自動(dòng)為這個(gè)變量分配了4個(gè)字節(jié)的存儲(chǔ)空間,當(dāng)為變量a輸入具體值,首先在內(nèi)存中找到變量a的地址,然后將輸入的值存到到該地址對(duì)應(yīng)的存儲(chǔ)單元中。打個(gè)比方,地址是教室的具體位置,而變量名是教室編號(hào),變量值是教室中學(xué)生。由于通過地址可以找到所需存儲(chǔ)單元,可以說地址指向?qū)?yīng)變量,因此C語言中,地址形象化地稱為指針。知道存放地址的變量是指針變量,導(dǎo)入到下一節(jié)“初識(shí)指針變量”。

        三、初識(shí)指針變量

        (一)認(rèn)識(shí)地址符號(hào)“&”

        介紹指針變量之前,首先需要理解楚下變量、變量值和變量的地址之間的關(guān)系,下面以實(shí)例1來認(rèn)識(shí)地址符號(hào)“&”,弄清變量、變量值和變量的地址三者之間的關(guān)系。

        實(shí)例1:

        #include

        int main()

        {int i=13;

        printf("i=%d&i=%d ",i,&i);return 0;}輸出結(jié)果:

        i=13&i=1245052

        通過輸出結(jié)果,可以看出“&”是取地址符號(hào)。

        (二)指針變量性質(zhì)

        變量有三個(gè)要素:變量名、變量值、變量的地址。指針變量也是變量,那么也有三要素,即變量名、變量值和變量的地址。以實(shí)例2說明如下。

        實(shí)例2:

        輸出結(jié)果:

        i=13&i=1245052

        p=1245052&p=1245048

        通過實(shí)例2,可以看出指針變量名為p的值是1245052,由于p是指針變量,存儲(chǔ)的是i的地址,因此變量i的地址就是p的值,有&i=1245052。p是指針變量也是變量,也有地址,地址是1245048。

        (三)指針變量存儲(chǔ)

        指針變量在內(nèi)存中占4個(gè)字節(jié),與指向的變量的數(shù)據(jù)類型無關(guān)。下面以實(shí)例3說明如下。

        實(shí)例3:輸出結(jié)果:

        size of c=1 size of i=4

        size of p1=4 size of p2=4

        通過實(shí)例3說明,指針變量p1和p2雖然指向不同數(shù)據(jù)類型的變量,但p1和p2在內(nèi)存中占的存儲(chǔ)空間都是4個(gè)字節(jié)。通過多次實(shí)驗(yàn),定義多個(gè)指針變量,指向多個(gè)存儲(chǔ)空間,得到結(jié)論都是指針變量所占存儲(chǔ)空間是4個(gè)字節(jié),讀者也可以自己進(jìn)行測試。

        (四)“*”運(yùn)算符

        訪問內(nèi)存中的數(shù)據(jù)有兩種方式:直接訪問和間接訪問。直接訪問就是通過變量來實(shí)現(xiàn),變量是內(nèi)存中的某一塊存儲(chǔ)區(qū)域的名稱,這種訪問方式比較簡單,也較常用;間接訪問就是通過指針來實(shí)現(xiàn)[6],下面通過實(shí)例4來說明間接訪問方式。

        實(shí)例4:

        代碼“i=4;”是對(duì)變量i的直接訪問,代碼“int*p=&i;”是聲明一個(gè)指針變量,使指針變量p指向整型變量i,代碼“*p=6;”是對(duì)變量i的間接訪問,將指針變量p所指向的變量賦值為6,因此第一次輸出i值,結(jié)果為4,第二次輸出i值,結(jié)果為6。

        四、指針的相關(guān)問題探討

        在認(rèn)識(shí)了指針變量后,提到C語言教材中指針的前面章節(jié)中介紹了兩個(gè)重要知識(shí)點(diǎn)“數(shù)組和函數(shù)”,對(duì)于數(shù)組和函數(shù)與指針有很多聯(lián)系,引入“函數(shù)與指針”和“數(shù)組與指針”。

        (一)函數(shù)與指針

        普通變量可以作為函數(shù)參數(shù),指針變量也是變量,當(dāng)然也可以作為函數(shù)參數(shù),具體用法見實(shí)例5。

        實(shí)例5:

        輸出結(jié)果:

        i=5&i=1245052

        p=1245052*p=5&p=1244972

        這種方式還是“值傳遞”,只不過實(shí)參的值是變量的地址而已。而在函數(shù)中改變的不是實(shí)參的值(即地址,這種改變也影響不到實(shí)參),而是實(shí)參地址所指向的變量的值。通過這個(gè)實(shí)例,可以看出實(shí)參是 &i(值為1245052),傳遞給形參 p(值為1245052),而形參p是內(nèi)存中的另一個(gè)變量,地址為1244972。

        如果在fun函數(shù)中增加一條語句 *p=6;是對(duì)變量i的間接訪問,將i的值修改為6,而如果增加 int j=9;p=&j;*p=10; 先修改p的值,p保存的是變量j的地址,*p是對(duì)j的間接訪問,將j修改為10,因?yàn)閜保存的已經(jīng)不是變量i的地址了,所以與i無關(guān)了。

        為了更好地強(qiáng)化指針變量作為函數(shù),下面再以一個(gè)典型實(shí)例分析,見實(shí)例6。

        實(shí)例6:

        輸出結(jié)果:

        第一次交換后:i=3 j=4

        第二次交換后:i=4 j=3

        通過實(shí)驗(yàn)結(jié)果我們可以發(fā)現(xiàn),在第一次交換,主函數(shù)通過調(diào)用swap1函數(shù),將變量i,j的值傳遞給了形參p,q。在swap函數(shù)中的交換的是p和q的值,p和q值交換后,并不能將交換后值傳給i和j,即普通變量作為形參,實(shí)參值傳給形參,但形參值不能傳給實(shí)參;在第二次交換,主函數(shù)通過調(diào)用swap2函數(shù),將變量i,j的地址傳遞給了形參p,q。swap2函數(shù)中的*p和*q是對(duì)i,j的間接訪問,*p和*q表示的是p和q所指向的變量,由于i和j的地址值是p和q,p和q所指向的變量則是i和j,在swap2函數(shù)中交換p和q所指向變量的值,即就是交換i和j的值,因此在調(diào)用swap2函數(shù)后,實(shí)現(xiàn)了交換i和j的值。

        (二)數(shù)組與指針

        通過指針變量可指向一個(gè)簡單變量,而數(shù)組元素可當(dāng)作簡單變量使用,因此指針變量也可指向數(shù)組元素,因?yàn)閿?shù)組是存儲(chǔ)在一片連續(xù)的內(nèi)存區(qū)中,當(dāng)指針指向某個(gè)數(shù)組元素后,可通過向前或向后移動(dòng)指針訪問數(shù)組中的其它元素。數(shù)組是由多個(gè)數(shù)組元素組成的,一個(gè)數(shù)組元素的首地址是第一個(gè)元素的地址。指針變量可以指向變量,當(dāng)然可以指向數(shù)組元素。

        從前面的學(xué)習(xí)者,知道數(shù)組在內(nèi)存中是連續(xù)存放的,例如int a[10],表示10個(gè)同種數(shù)據(jù)類型的變量,即數(shù)組元素:a[0]~a[9],那么每個(gè)元素的地址則為:&a[0]...&a[9],數(shù)組元素的地址也可以記作 a,a+1,...,a+9,即 a 與 &a[0]等價(jià),表示第一個(gè)數(shù)組元素a[0]地址。由于指針變量值為地址,因此,可以定義指針變量,用來指向數(shù)組元素。

        例如定義:int*p;則p=a;

        則表示數(shù)組元素a[i]可以使用指針法:*(a+i)或*(p+i),從這個(gè)關(guān)系雖然可以說*(a+i)等價(jià)于*(p+i),但值得注意的是a和p并不等價(jià),數(shù)組名可以說是常量指針,而p是變量指針,對(duì)于a,不可以使用“a++”,即數(shù)組名不能加加運(yùn)算,a的值不能改變,而p是變量指針,因此可以進(jìn)行“p++”操作,如果有int*p;p=a;則p++;p的值為a+1。數(shù)組名是存儲(chǔ)地址的常量指針,因此數(shù)組名不能進(jìn)行自加自減等運(yùn)算,而指針變量是變量,其值可以發(fā)生變化,可以進(jìn)行相應(yīng)的自加自減等運(yùn)算。

        數(shù)組除了一維數(shù)組之外,常還有二維數(shù)組和多維數(shù)組,由于多維數(shù)組比較復(fù)雜,較難理解,也不常用,暫不做介紹。

        五、總結(jié)

        指針是C語言的核心知識(shí)點(diǎn),是C語言的精髓,正確理解和使用指針對(duì)C語言的學(xué)習(xí)至關(guān)重要。本文在教學(xué)實(shí)踐中,從指針的導(dǎo)入、指針概念的理解以及指針涉及的相關(guān)難點(diǎn)問題三方面進(jìn)行探討,層層深入、承上啟下,順序安排合理,便于學(xué)生全面理解指針的概念和用法,真正提高了學(xué)生C語言的編程能力。

        [1]裴新鳳.如何正確地使用C語言的指針[J].西北民族學(xué)院學(xué)報(bào),1999,20(6):41-43.

        [2]高閣.C語言指針教學(xué)的研究與探討[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2010,23(1):185-187.

        [3]梅維安.C語言中指針教學(xué)方法 [J].陰山學(xué)刊,2009,23(4):93:95.

        [4]劉井蓮,樊守芳,尚曉麗,包向輝,王志國.C語言函數(shù)教學(xué)實(shí)踐[J].通化師范學(xué)院學(xué)報(bào),2011(8):58-60.

        [5]趙衛(wèi)績,劉井蓮.實(shí)例教學(xué)法在C語言循環(huán)教學(xué)中的應(yīng)用[J].通化師范學(xué)院學(xué)報(bào).2012(10):50-51.

        [6]國家863中部軟件孵化器.C語言從入門到精通[M].人民郵電出版社,2010:236-237.

        猜你喜歡
        數(shù)組指針指向
        JAVA稀疏矩陣算法
        科學(xué)備考新指向——不等式選講篇
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        偷指針的人
        把準(zhǔn)方向盤 握緊指向燈 走好創(chuàng)新路
        為什么表的指針都按照順時(shí)針方向轉(zhuǎn)動(dòng)
        尋找勾股數(shù)組的歷程
        基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
        電測與儀表(2015年5期)2015-04-09 11:30:42
        ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
        VB數(shù)組在for循環(huán)中的應(yīng)用
        考試周刊(2012年88期)2012-04-29 04:36:47
        精品国产精品国产偷麻豆| 午夜香蕉av一区二区三区| 久久精品伊人久久精品伊人| 免费观看国产短视频的方法| 正在播放东北夫妻内射| 麻豆精品网站国产乱子伦| 丰满少妇高潮在线观看| 日韩在线精品视频一区| 国产精品爽爽v在线观看无码| 怡春院欧美一区二区三区免费| 中日无码精品一区二区三区| 日本女优中文字幕在线播放 | 91国内偷拍一区二区三区| 久久久精品国产亚洲av网深田| 成人欧美一区二区三区1314| 激情五月天伊人久久| 日本一曲二曲三曲在线| 亚洲最新无码中文字幕久久| 亚洲人成色777777老人头| 亚洲中文字幕av天堂| 视频区一区二在线观看| 亚洲av网一区二区三区| 国产精品丝袜黑色高跟鞋| 国产亚洲一区二区三区成人 | 欧美情侣性视频| 国产不卡在线免费视频| 最新国产熟女资源自拍| 精品亚洲一区二区三区四区五区 | 人人澡人人澡人人看添av| 九九久久国产精品大片| 美女被强吻并脱下胸罩内裤视频| 成品人视频ww入口| 人妻av一区二区三区精品| 精品午夜一区二区三区| 亚洲av久播在线一区二区| 无码av免费一区二区三区试看| 亚洲人成影院在线高清| 女同一区二区三区在线观看| 性裸交a片一区二区三区| 午夜无码一区二区三区在线| 国产午夜福利在线观看中文字幕|