• 
    

    
    

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

      淺談C語(yǔ)言中數(shù)組變量的教學(xué)

      2020-03-08 06:02:24周二強(qiáng)
      現(xiàn)代計(jì)算機(jī) 2020年36期
      關(guān)鍵詞:存儲(chǔ)單元數(shù)組指針

      周二強(qiáng)

      (河南城建學(xué)院計(jì)算機(jī)與數(shù)據(jù)科學(xué)學(xué)院,平頂山467036)

      數(shù)組是C語(yǔ)言教學(xué)中的重點(diǎn)和難點(diǎn),本文提出虛擬變量的概念,直觀而深刻地揭示數(shù)組變量的本質(zhì)。把數(shù)組統(tǒng)一為變量,為學(xué)生自主理解辨析數(shù)組和指針變量鋪平了道路,也為反轉(zhuǎn)教學(xué)提供必要的條件,極大地提高學(xué)生的學(xué)習(xí)積極性。

      虛擬變量;數(shù)組;指針;C語(yǔ)言

      圖1 相關(guān)變量的存儲(chǔ)狀態(tài)簡(jiǎn)圖

      0 引言

      C語(yǔ)言是經(jīng)典的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,其語(yǔ)法被現(xiàn)代編程語(yǔ)言廣泛借鑒,國(guó)內(nèi)許多高校都開(kāi)設(shè)了C語(yǔ)言課程。國(guó)內(nèi)現(xiàn)行C語(yǔ)言教材大多強(qiáng)調(diào)實(shí)訓(xùn),注重編程能力的培養(yǎng),忽視了C語(yǔ)言和計(jì)算機(jī)的關(guān)系,導(dǎo)致C語(yǔ)言教材中的一些概念不清,既不利于學(xué)生系統(tǒng)分析能力的培養(yǎng),也不便于反轉(zhuǎn)課堂等教學(xué)改革的進(jìn)行。近年來(lái)新出現(xiàn)的“反轉(zhuǎn)”課堂(Flipped Class,也譯為“翻轉(zhuǎn)”課堂)教學(xué)模式,引起了教育界的廣泛關(guān)注。“反轉(zhuǎn)”即師生互換角色,教師是主導(dǎo),學(xué)生是主體,這充分發(fā)揮了以人為本的教學(xué)思想和教師的主導(dǎo)作用[1]。在課堂教學(xué)活動(dòng)中應(yīng)強(qiáng)調(diào)學(xué)生的參與意識(shí),充分體現(xiàn)學(xué)生在課堂中的主體地位[2]。

      數(shù)組是C語(yǔ)言教學(xué)中的重點(diǎn)。使用數(shù)組可以方便地重復(fù)處理大量的數(shù)據(jù),作為數(shù)據(jù)結(jié)構(gòu),數(shù)組的基本用法不難掌握。但由于現(xiàn)行教材對(duì)數(shù)組概念的模糊處理,使得多數(shù)學(xué)生不能自主學(xué)習(xí)有關(guān)知識(shí)點(diǎn),更不要說(shuō)積極主動(dòng)地參與反轉(zhuǎn)課堂了,導(dǎo)致學(xué)習(xí)效果不理想,不會(huì)利用指針變量操作復(fù)雜的數(shù)組。

      1 變量、指針變量和數(shù)組變量

      在C語(yǔ)言中,借助變量使用計(jì)算機(jī)中的存儲(chǔ)單元,一個(gè)變量標(biāo)識(shí)了計(jì)算機(jī)中的一塊存儲(chǔ)單元。存儲(chǔ)單元是內(nèi)存塊在C語(yǔ)言中的抽象,具有固定的大小,分類(lèi)型,某類(lèi)存儲(chǔ)單元只能存放該類(lèi)數(shù)據(jù)。

      語(yǔ)句int i;定義了一個(gè)整型(int)變量i,它對(duì)應(yīng)于一個(gè)整型(int)存儲(chǔ)單元,只能存儲(chǔ)一個(gè)整數(shù)(int)。語(yǔ)句int*pi;定義一個(gè)整型指針變量pi,它對(duì)應(yīng)于一個(gè)整型指針(int*)存儲(chǔ)單元,只能存儲(chǔ)一個(gè)整型存儲(chǔ)單元的地址(int*)。與普通變量存儲(chǔ)常見(jiàn)的數(shù)據(jù)不同,指針變量用于存儲(chǔ)地址。地址是存儲(chǔ)單元在計(jì)算機(jī)中的編號(hào),用于定位存儲(chǔ)單元。

      語(yǔ)句i=5;可以把整數(shù)5存入與變量i相關(guān)的存儲(chǔ)單元中。語(yǔ)句pi=&i;可以把與變量i相關(guān)的整型存儲(chǔ)單元的地址存入與變量pi相關(guān)的存儲(chǔ)單元中,此時(shí)常形象地稱(chēng)指針變量pi指向了變量i。它們?cè)趦?nèi)存中的狀態(tài)可用圖1簡(jiǎn)單地表示。

      可簡(jiǎn)單地認(rèn)為,變量i的值是5,指針變量pi的值是&i。由于地址屬于計(jì)算機(jī)的內(nèi)部數(shù)據(jù),而非用戶(hù)數(shù)據(jù),故對(duì)初學(xué)者而言,指針變量難以理解。指針變量的用法分兩步,首先,以直接引用的方式使用指針變量本身,如pi=&i;,使得指針變量指向變量i;然后,以間接引用的方式借助指針變量使用其指向的變量,如*pi=6;。盡管直接引用的方式簡(jiǎn)便,但受變量作用域的限制。只要獲得了存儲(chǔ)單元的地址就能以間接引用的方式使用存儲(chǔ)單元,間接引用的方式可以擴(kuò)展存儲(chǔ)單元的使用范圍[3]。

      語(yǔ)句int a[3]={1,2,3};定義一個(gè)數(shù)組變量a,即申請(qǐng)了一塊存儲(chǔ)單元用于存儲(chǔ)整數(shù)1,2,3。數(shù)組變量a由3個(gè)整型變量組成,其內(nèi)存狀態(tài)可能如圖2所示。

      圖2 數(shù)組a的內(nèi)存狀態(tài)

      由圖2可知,數(shù)組變量a沒(méi)有專(zhuān)屬于自己的存儲(chǔ)單元,并不是一個(gè)真正的變量,數(shù)組變量a的值是C語(yǔ)言規(guī)定的。從這個(gè)角度分析,數(shù)組變量a是一個(gè)符號(hào)常量。但sizeof(a)的值是12,即數(shù)組變量a的存儲(chǔ)單元有12個(gè)字節(jié),數(shù)組元素的存儲(chǔ)單元都屬于數(shù)組變量a,所以,不能簡(jiǎn)單地把數(shù)組變量a理解為普通的符號(hào)常量。數(shù)組a應(yīng)理解成一個(gè)虛擬的變量[3]。數(shù)組變量a指向了其首元素,數(shù)組變量a與其首元素a[0]的關(guān)系可用圖3表示。

      圖3 虛擬的數(shù)組變量a

      數(shù)組變量a是一個(gè)int[3]型存儲(chǔ)單元。由圖3可知,其地址和值均為0x0012ff00,但這兩個(gè)地址的意義不同,其地址(&a)是一個(gè)int[3]型地址,其值(a)是一個(gè)int地址(&a[0]),即&a+1指向下一個(gè)int[3]型存儲(chǔ)單元,其值為0x0012ff12,但a+1指向a[1],其值為0x0012ff04。

      2 二維數(shù)組變量

      以二維數(shù)組int a[3][2]={{1,2},{21,22},{31,32}}為例,它的內(nèi)存狀態(tài)可能如圖4(1)所示。

      圖4 二維數(shù)組a的內(nèi)存狀態(tài)

      二維數(shù)組a有3個(gè)數(shù)組元素a[0]、a[1]和a[2],數(shù)組元素的類(lèi)型是長(zhǎng)度為2的一維整型數(shù)組,即它們標(biāo)識(shí)一個(gè)int[2]型存儲(chǔ)單元。

      二維數(shù)組變量a是一個(gè)虛擬的變量,它標(biāo)識(shí)的存儲(chǔ)單元的長(zhǎng)度為24個(gè)字節(jié)(sizeof(a)的值為24),類(lèi)型為int[3][2]。二維數(shù)組變量a也指向了首元素a[0],其值為int[2]型地址0x0012 ff00,*a與a[0]可以互換使用,sizeof(*a)與sizeof(a[0])的值為8。

      一維數(shù)組a[0]所標(biāo)識(shí)的存儲(chǔ)單元長(zhǎng)度為8個(gè)字節(jié),類(lèi)型為int[2]。一維數(shù)組變量a[0]指向了首元素a[0][0],其值為int型地址0x0012 ff00,*a[0]與a[0][0]可互換使用,sizeof(*a[0])或sizeof(a[0][0])的值為4。

      二維數(shù)組變量a,一維數(shù)組變量a[0],整型變量a[0][0]三者的關(guān)系如圖4(2)所示。

      如有int*p,則指針變量p不能用二維數(shù)組a賦值,因?yàn)槎S數(shù)組變量a的首元素a[0]為int[2]型,即長(zhǎng)度為2的一維整型數(shù)組,而指針變量p只能存儲(chǔ)int型地址??梢源鎯?chǔ)int[2]型地址的指針變量理想的定義方式為int[2]*p,而C語(yǔ)言中實(shí)際的定義方式為int(*p)[2]。定義了可以指向int[2]型存儲(chǔ)單元的指針變量p后,就可以用p=a(或p=&a[0])讓指針變量p指向數(shù)組a的首元素a[0]了。此時(shí)指針變量p、二維數(shù)組變量a、一維數(shù)組變量a[0]及a[0][0]的關(guān)系如圖5所示。

      圖5 二維數(shù)組與指向其首元素的指針變量

      3 舉例分析二維數(shù)組與指針變量

      下面程序用三種方式輸出了二維數(shù)組a的數(shù)組元素。

      分析:

      p=a;執(zhí)行后,指針變量p也指向了數(shù)組a的首元素a[0],故p+i指向了a[i],*(p+i)與a[i]標(biāo)識(shí)了同一個(gè)長(zhǎng)度為2的一維整型數(shù)組,表達(dá)式(*(p+i))[j]標(biāo)識(shí)了該數(shù)組型存儲(chǔ)單元的第j個(gè)數(shù)組元素,表達(dá)式(*(p+i))[j]與a[i][j]可互換。

      pi=a[i];執(zhí)行后,pi也指向了a[i]的首元素a[i][0],故pi+j指向了a[i][j],因此表達(dá)式*(pi+j)與a[i][j]標(biāo)識(shí)同一個(gè)整型存儲(chǔ)單元。

      pi=a[0];執(zhí)行后,pi也指向了a[0]的首元素a[0][0]。表達(dá)式*pi++求值時(shí),兩個(gè)操作符優(yōu)先級(jí)相同,右結(jié)合,先計(jì)算子表達(dá)式pi++,值為pi,原表達(dá)式的值為*pi,但求值的同時(shí),變量pi的值自增1,pi指向了與原指向的存儲(chǔ)單元相鄰的下一個(gè)同類(lèi)型存儲(chǔ)單元。第一次求值時(shí),表達(dá)式*pi++與a[0][0]標(biāo)識(shí)了同一個(gè)存儲(chǔ)單元,且pi指向了a[0][1];第二次求值時(shí),表達(dá)式*pi++與a[0][1]標(biāo)識(shí)了同一個(gè)存儲(chǔ)單元,且pi指向了a[0][2];……。由于數(shù)組的數(shù)組元素相鄰,故通過(guò)重復(fù)地輸出表達(dá)式*pi++的值也可以輸出數(shù)組a的所有數(shù)組元素。

      4 結(jié)語(yǔ)

      指針的使用,極大地提高了C語(yǔ)言的執(zhí)行效率,但地址的存在,增加了C語(yǔ)言的學(xué)習(xí)難度。給初學(xué)者提供一個(gè)直觀且準(zhǔn)確的概念,不僅可以極大地降低學(xué)習(xí)難度,不會(huì)造成C語(yǔ)言知識(shí)點(diǎn)的殘缺,而且也為啟發(fā)式教學(xué)提供了可能,教學(xué)效果顯著。

      猜你喜歡
      存儲(chǔ)單元數(shù)組指針
      一種28 nm工藝下抗單粒子翻轉(zhuǎn)SRAM的12T存儲(chǔ)單元設(shè)計(jì)
      JAVA稀疏矩陣算法
      JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
      偷指針的人
      數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中的存儲(chǔ)形式及實(shí)驗(yàn)驗(yàn)證
      為什么表的指針都按照順時(shí)針?lè)较蜣D(zhuǎn)動(dòng)
      一種成本更低的全新靜態(tài)DRAM存儲(chǔ)單元
      MiR-125a-5p is Upregulated in Plasma of Residents from An Electronic Waste Recycling Site
      尋找勾股數(shù)組的歷程
      基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
      万山特区| 北流市| 缙云县| 衡阳县| 泸西县| 巴里| 舞阳县| 康马县| 离岛区| 读书| 峨眉山市| 海口市| 彭山县| 通江县| 丹寨县| 连州市| 马关县| 巫山县| 什邡市| 微山县| 桐庐县| 游戏| 铜川市| 光山县| 南陵县| 山东| 区。| 互助| 潼关县| 沂南县| 万全县| 锦州市| 临沧市| 江西省| 马边| 老河口市| 金门县| 宾川县| 崇义县| 鹤壁市| 凤庆县|