• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    指針教學(xué)實踐

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

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

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

    一、序言

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

    二、導(dǎo)入

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

    三、初識指針變量

    (一)認識地址符號“&”

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

    實例1:

    #include

    int main()

    {int i=13;

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

    i=13&i=1245052

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

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

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

    實例2:

    輸出結(jié)果:

    i=13&i=1245052

    p=1245052&p=1245048

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

    (三)指針變量存儲

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

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

    size of c=1 size of i=4

    size of p1=4 size of p2=4

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

    (四)“*”運算符

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

    實例4:

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

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

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

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

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

    實例5:

    輸出結(jié)果:

    i=5&i=1245052

    p=1245052*p=5&p=1244972

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

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

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

    實例6:

    輸出結(jié)果:

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

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

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

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

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

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

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

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

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

    五、總結(jié)

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

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

    [2]高閣.C語言指針教學(xué)的研究與探討[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é)實踐[J].通化師范學(xué)院學(xué)報,2011(8):58-60.

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

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

    猜你喜歡
    數(shù)組指針C語言
    JAVA稀疏矩陣算法
    電腦報(2022年13期)2022-04-12 00:32:38
    基于Visual Studio Code的C語言程序設(shè)計實踐教學(xué)探索
    計算機教育(2020年5期)2020-07-24 08:52:56
    JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
    電腦報(2020年24期)2020-07-15 06:12:41
    偷指針的人
    娃娃畫報(2019年5期)2019-06-17 16:58:10
    基于C語言的計算機軟件編程
    電子制作(2018年16期)2018-09-26 03:27:08
    為什么表的指針都按照順時針方向轉(zhuǎn)動
    高職高專院校C語言程序設(shè)計教學(xué)改革探索
    尋找勾股數(shù)組的歷程
    基于改進Hough變換和BP網(wǎng)絡(luò)的指針儀表識別
    電測與儀表(2015年5期)2015-04-09 11:30:42
    論子函數(shù)在C語言數(shù)據(jù)格式輸出中的應(yīng)用
    北宁市| 保康县| 东山县| 桑植县| 丹阳市| 仁化县| 霍城县| 喀喇沁旗| 乐陵市| 桃园市| 丹东市| 溧水县| 宁河县| 班玛县| 定南县| 永春县| 上栗县| 秀山| 石河子市| 临朐县| 高州市| 祁门县| 灌云县| 延庆县| 花莲县| 郑州市| 赞皇县| 茂名市| 同心县| 资溪县| 阳山县| 阜平县| 马山县| 建水县| 木兰县| 闽侯县| 曲周县| 阿合奇县| 庄浪县| 台东市| 弥渡县|