• 
    

    
    

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

      C語言指針教學(xué)重點(diǎn)和難點(diǎn)問題淺析

      2019-10-08 06:27:21楊陽
      軟件 2019年6期
      關(guān)鍵詞:指針計(jì)算機(jī)教學(xué)重難點(diǎn)

      摘 ?要: 隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,計(jì)算機(jī)教學(xué)對基礎(chǔ)課程的要求越來越高。本文以《C語言程序設(shè)計(jì)》中指針教學(xué)為對象,通過探討概念、種類和用法,詳細(xì)講解了二維數(shù)組、行指針、二級指針、指針數(shù)組之間的區(qū)別和關(guān)系。實(shí)踐證明,對于指針重點(diǎn)難點(diǎn)的分析,有利于學(xué)生C語言知識(shí)體系的建立。

      關(guān)鍵詞: C語言;指針;計(jì)算機(jī)教學(xué);重難點(diǎn)

      中圖分類號(hào): TP3 ? ?文獻(xiàn)標(biāo)識(shí)碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.06.045

      本文著錄格式:楊陽. C語言指針教學(xué)重點(diǎn)和難點(diǎn)問題淺析[J]. 軟件,2019,40(6):197199

      【Abstract】: With the rapid development of internet technique, more computer teaching requirements for basic courses are needed. This article focusing on pointer teaching of《C Language Programming Design》, exploring concepts, types and usage, gives a detailed explaination of the differences and relations among two-dimensional array, row pointer, two-level pointer and pointer array. The practice shows the analysis of key and difficult points of pointer is beneficial for the establishment of students C language knowledge system.

      【Key words】: C language; Pointer; Computer teaching; Key and difficult points

      0 ?引言

      隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,計(jì)算機(jī)應(yīng)用滲透到社會(huì)生活中的方方面面,性能優(yōu)良、用戶體驗(yàn)好的軟件應(yīng)用成為互聯(lián)網(wǎng)行業(yè)產(chǎn)品準(zhǔn)入標(biāo)準(zhǔn),人工智能的興起,促進(jìn)了軟件向智能化轉(zhuǎn)變。這些市場需求的變化,要求計(jì)算機(jī)專業(yè)人才除了有全面的技術(shù)素養(yǎng),更要重視能力和基礎(chǔ)。這主要體現(xiàn)在,通過基礎(chǔ)知識(shí)的掌握,能夠快速進(jìn)行學(xué)習(xí)領(lǐng)域環(huán)境的遷移,能夠解決實(shí)際生產(chǎn)中遇到的各種問題?!禖語言程序設(shè)計(jì)》是軟件工程學(xué)科的專業(yè)基礎(chǔ)課程,是其他程序設(shè)計(jì)語言教學(xué)(如C++/Java)的先行課程,對于理解計(jì)算機(jī)系統(tǒng)原理、編譯技術(shù)起著重要作用。通過《C語言程序設(shè)計(jì)》的學(xué)習(xí),學(xué)生能夠掌握面向過程編程的基本范式,理解程序運(yùn)行的基本原理,進(jìn)而快速過渡到面向?qū)ο蟪绦蛟O(shè)計(jì)??傊珻語言是計(jì)算機(jī)專業(yè)基礎(chǔ)教學(xué)的重要內(nèi)容[1],對于提高程序開發(fā)素養(yǎng)具有重要意義。

      在《C語言程序設(shè)計(jì)》教學(xué)中,指針是貫穿整個(gè)課程的核心內(nèi)容[2],也是學(xué)生學(xué)習(xí)的重點(diǎn)和難 點(diǎn)。本文通過對指針用法的解釋和剖析,建立清晰的認(rèn)知概念,促進(jìn)學(xué)生對于各類指針用法的熟練 ?掌握。

      1 ?C語言指針教學(xué)重難點(diǎn)概述

      指針是C語言中非常重要的概念,通過對指針的學(xué)習(xí),可以使學(xué)生了解C編譯系統(tǒng)的尋址原理[3],增強(qiáng)對變量名和變量地址之間內(nèi)在關(guān)系的邏輯認(rèn) 識(shí)[4],并靈活操作數(shù)組、字符串和函數(shù)間參數(shù)傳遞。正因?yàn)橹羔樃拍钬灤┝硕鄠€(gè)知識(shí)點(diǎn),使用起來“變化多端”,給學(xué)生掌握帶來不同程度的困難。本文將通過討論C指針的若干重難點(diǎn),如指針和地址的關(guān)系、指針與數(shù)組以及二維數(shù)組、行指針、二級指針、指針數(shù)組之間的關(guān)系等,較為全面的闡述指針的多種用法,使C語言教學(xué)更加清晰簡潔。

      2 ?C語言指針若干問題探討

      2.1 ?指針和地址

      關(guān)于指針和地址之間的關(guān)系,不同的資料給出了各自的解釋。有解釋為“指針就是內(nèi)存地址”[5],有將指針理解為一種特殊的變量,這種變量專門用來存放其它變量的內(nèi)存地址。本文主要采用后一種理解,并不加區(qū)分“指針”與“指針變量”。對于32位操作系統(tǒng)而言,任一變量的地址是4個(gè)字節(jié),不管指針變量的基類型是什么,指針變量自身都占用4個(gè)字節(jié)。指針基類型還主要用來確定指針每移動(dòng)一個(gè)邏輯單位所跨越的字節(jié)數(shù):基類型為int的指針每加1向后移動(dòng)4個(gè)字節(jié),基類型為double的指針每加1向后移動(dòng)8個(gè)字節(jié),這就意味著不同基類型的指針不能混合使用。

      2.2 ?指針和數(shù)組

      2.3 ?二維數(shù)組、行指針、二級指針、指針數(shù)組之間關(guān)系

      對于二維數(shù)組作為函數(shù)實(shí)參,那么形參的類型是fun (double (*a)[N]),即以一個(gè)行指針作為形參接受二維數(shù)組,二維數(shù)組名可以賦值給行指針。

      對于指針數(shù)組(double *arr[N])作為函數(shù)實(shí)參,那么形參的類型是fun ( double **a),即以一個(gè)指向指針的指針(二級指針)作為形參接受指針數(shù)組,指針數(shù)組名可以賦值給二級指針。

      二維數(shù)組、行指針、二級指針、指針數(shù)組之間關(guān)系的示例如下所示:

      void main(){

      int arr[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11, 12}};

      int(*hanP)[4]; //行指針

      int **twoP; //二級指針

      int *p[3]; //指針數(shù)組

      //指針數(shù)組的用法

      for (int i = 0; i < 3; i++) {

      p[i] = arr[i];

      }

      //行指針用法

      hanP = arr;

      //二級指針用法

      twoP = p;

      printf("%d ?", hanP[1][2]);//7

      printf("%d ?", p[1][2]); //7

      printf("%d ?", twoP[1][2]);//7

      }

      在上面的示例中,首先聲明定義了一個(gè)二維數(shù)組arr,行指針hanP,二級指針twoP,以及指針數(shù)組p。對于指針數(shù)組p而言,每一個(gè)元素都是一個(gè)普通指針,所以在對指針數(shù)組進(jìn)行初始化的時(shí)候,其每一個(gè)元素都用一個(gè)列指針arr[i]來賦值,表示對應(yīng)二維數(shù)組中某一行的起始元素地址。對于行指針hanP而言,直接用數(shù)組名arr進(jìn)行賦值,因?yàn)閿?shù)組名arr本身也是行指針類型。對于二級指針twoP而言,它表示指向指針的指針,它存儲(chǔ)的內(nèi)容是另一個(gè)一級指針的地址,這與指針數(shù)組名p相對應(yīng),所以將p賦值給twoP。

      如上所示,二級指針twoP、twoP+1、twoP+2、twoP+3分別指向一個(gè)一級指針p[i],即二級指針采用指針法*(twoP+i)或下標(biāo)法twoP[i]可以獲取指針數(shù)組中每個(gè)元素p[i]的值。在指針數(shù)組中,通過p[1][2](或 *(*(p+1)+2) )能夠獲取到二維數(shù)組中第1行、第2列(從0開始計(jì)數(shù))的元素7,那么,根據(jù)前面的分析,twoP[1](或 *(*(twoP+1)+2) )也能夠獲取到二維數(shù)組中第1行、第2列的元素7。

      對于行指針與二級指針的關(guān)系,首先將行指針通過*運(yùn)算轉(zhuǎn)化為列指針,然后再進(jìn)行賦值操作:*twoP = *hanP。

      綜上討論所述二維數(shù)組、行指針、二級指針、指針數(shù)組之間的相互關(guān)系,可以發(fā)現(xiàn),不同種類的指針代表不同的尋址方式,或者說不同的地址計(jì)算方法,它們之間可以按規(guī)則進(jìn)行轉(zhuǎn)化。

      3 ?結(jié)束語

      基于軟件專業(yè)課程標(biāo)準(zhǔn)的新要求,探討了《C語言程序設(shè)計(jì)》這門課中關(guān)于指針部分的重點(diǎn)和難點(diǎn)。通過對相關(guān)內(nèi)容的介紹,特別是指針與地址、指針與數(shù)組以及二維數(shù)組、行指針、二級指針、指針數(shù)組之間關(guān)系的討論,梳理了C語言課程教學(xué)中的知識(shí)要點(diǎn),有利于教師的授課和學(xué)生的學(xué)習(xí),對教育教學(xué)有一定的促進(jìn)作用。

      參考文獻(xiàn)

      [1] 李曉東, 魏惠茹, 董振華. 項(xiàng)目驅(qū)動(dòng)教學(xué)法在計(jì)算機(jī)程序設(shè)計(jì)語言課中的探索[J]. 軟件, 2015, 36(4): 107-109.

      [2] 賴曉燕, 趙浩, 程鈴鈁. 基于CS2013的程序設(shè)計(jì)基礎(chǔ)課程建設(shè)[J]. 軟件, 2018, 39(6): 16-19.

      [3] 田淑清. 全國計(jì)算機(jī)等級考試二級教程——C語言程序設(shè)計(jì)(2018年版)[M]. 北京: 高等教育出版社, 2017: 98.

      [4] 譚浩強(qiáng). C程序設(shè)計(jì)[M]. 4. 北京: 清華大學(xué)出版社, 2010: 220.

      [5] 丁留海. C語言指針的底層原理[J]. 電子技術(shù)與軟件工程, 2016(21):257.

      [6] 孔浩. C指針編程之道[M]. 北京: 人民郵電出版社, 2011: 28.

      [7] 張峻. 論C語言中指針和數(shù)組關(guān)系[J]. 科技資訊, 2009(17): 28-29.

      猜你喜歡
      指針計(jì)算機(jī)教學(xué)重難點(diǎn)
      偷指針的人
      誦讀100句,記考綱重難點(diǎn)詞匯(二)
      為什么表的指針都按照順時(shí)針方向轉(zhuǎn)動(dòng)
      網(wǎng)絡(luò)環(huán)境下中職計(jì)算機(jī)教學(xué)的探析
      職業(yè)(2016年10期)2016-10-20 22:29:07
      中學(xué)計(jì)算機(jī)信息技術(shù)課程教學(xué)存在問題和對策
      開展研究性學(xué)習(xí)深化中職計(jì)算機(jī)教學(xué)改革探究
      成才之路(2016年26期)2016-10-08 12:04:07
      計(jì)算機(jī)教學(xué)中存在的問題與對策研究
      成才之路(2016年25期)2016-10-08 10:26:43
      化學(xué)平衡重難點(diǎn)知識(shí)突破
      基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
      電測與儀表(2015年5期)2015-04-09 11:30:42
      ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
      拉萨市| 陇南市| 会宁县| 宜昌市| 巴东县| 南平市| 长丰县| 陇南市| 建水县| 措美县| 社会| 中方县| 阿克陶县| 延川县| 道孚县| 沾化县| 甘南县| 德钦县| 林芝县| 泗水县| 榆社县| 都兰县| 贵南县| 石楼县| 韶山市| 三明市| 塘沽区| 油尖旺区| 德兴市| 西乌| 大理市| 准格尔旗| 吐鲁番市| 长泰县| 惠安县| 昭苏县| 板桥市| 达日县| 根河市| 锡林郭勒盟| 鹤岗市|