• 
    

    
    

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

      指針在《C程序設(shè)計》教學(xué)中的應(yīng)用研究

      2020-11-24 09:15:28李翠蓮
      呂梁教育學(xué)院學(xué)報 2020年3期
      關(guān)鍵詞:存儲空間數(shù)組指針

      李翠蓮

      (呂梁學(xué)院離石師范分校, 山西 離石 033000)

      指針在《C程序設(shè)計》課程教學(xué)中是必須掌握的重點教學(xué)內(nèi)容之一,是C程序設(shè)計的精華[1],但也是應(yīng)用廣泛、使用靈活、功能強大、掌握難度大、最容易出現(xiàn)錯誤的知識點。熟練掌握并能夠準(zhǔn)確應(yīng)用指針進行程序設(shè)計是駕馭C程序設(shè)計的標(biāo)志,在進行程序設(shè)計時巧妙的利用指針能夠設(shè)計出高效、簡潔的程序,對問題的處理可達到事半功倍的效果。

      一、指針的定義

      (一)數(shù)組的使用

      數(shù)組是具有相同數(shù)據(jù)類型的數(shù)據(jù)依次存儲在連續(xù)的內(nèi)存空間中,在編寫程序時可以使用循環(huán)算法遍歷處理數(shù)組中的每個元素,使編制的程序簡潔、高效[3],數(shù)組的本質(zhì)是數(shù)據(jù)存儲在連續(xù)的存儲空間中,利用連續(xù)地址的特點訪問存儲空間,編程時只要知道存儲空間的首地址和數(shù)據(jù)個數(shù),編程時訪問第一個數(shù)據(jù)后,利用地址變量=首地址±i訪問連續(xù)的存儲空間,從而可以利用循環(huán)算法遍歷數(shù)組中的每個元素。如下算法實現(xiàn)給100個連續(xù)的存儲空間存放02、12、22……992共100個數(shù),代碼簡潔、高效:

      int GradeArr[100];

      for(int i = 0; i < 100; i++)

      GradeArr[i] = i * i;

      (二)指針的定義

      在計算機科學(xué)技術(shù)中,指針(Pointer)是程序設(shè)計語言中的一種數(shù)據(jù)類型,它利用地址值直接指向(points to)計算機內(nèi)存中的一個存儲單元,通過地址直接指向存儲單元(即變量單元)中的數(shù)據(jù)故稱為“指針”。C程序設(shè)計利用指針取代匯編語言或機器語言直接訪問存儲單元,在編寫系統(tǒng)軟件和硬件控制程序中有非常強大的功能,所以指針是C語言的精華,利用指針可以操控硬件,只要知變量的首地址和變量的個數(shù),就可以用循環(huán)算法遍歷其中的數(shù)據(jù)(有關(guān)指針的定義使用等知識點略)。

      二、利用指針訪問變量中的數(shù)據(jù)

      (一)整形變量循環(huán)算法訪問

      分析一組變量:int a = 3,b = 8 ,c = 51 ,d = 88,e = 125;其各變量的地址值連續(xù)并相差值為4,如表1,用“a地址值-i”算法實現(xiàn)遍歷5個變量值,從表可以看出C語言在連續(xù)聲明變量時采用從右到左以壓棧的方式開辟存儲空間,變量地址值內(nèi)存中是連續(xù)的,可以利用連續(xù)的特點采用循環(huán)算法訪問a、b、c、d、e五個變量中的值,如下一個循環(huán)語句等價于5條printf語句,運行結(jié)果如圖1:

      圖1 連續(xù)整形變量運行結(jié)果

      表1 a、b、c、d、e變量的地址

      int a = 3,b = 8 ,c = 51 ,d = 88,e = 125;

      for(int i = 0;i < 5;i++)

      printf("%c = %d ",97 + i,*(&a - i));∥“&a - i”指針

      (二)字符型變量循環(huán)算法訪問

      上述5個字符變量聲明后,用指針連續(xù)訪問的核心算法為:&a - i * 4(其中i=0,1,2,3,4),實現(xiàn)語句如下:

      char a = ‘A’,b = ‘B’ ,c = ‘C’ ,d = ‘D’,e = ‘E’;

      for(int i = 0;i < 5;i++)

      printf("%c = %d ",97 + i,*(&a - i * 4));∥“&a - i *4”指針

      上述程序運行結(jié)果如圖2。

      圖2 連續(xù)字符型變量運行結(jié)果

      三、利用指針實現(xiàn)函數(shù)值的多值返回

      計算機中函數(shù)是模塊化程序設(shè)計基礎(chǔ),它是一段固定程序,也稱其為子程序,能實現(xiàn)特定功能的算法。函數(shù)的最主要特征是只有一個入口和一個出口,入口即函數(shù)所帶的各個參數(shù),把函數(shù)的參數(shù)值傳遞到子程序中,作為算法處理的對象,出口即函數(shù)經(jīng)過運算后的結(jié)果返回到主調(diào)用函數(shù)處,程序語言規(guī)定一個函數(shù)只能返回0或1個返回值。在實際問題中有時要求函數(shù)算法結(jié)果影響主調(diào)函數(shù)的幾個值,如對整形數(shù)組中數(shù)據(jù)進行排序,實質(zhì)要求返回多個值與函數(shù)規(guī)定相矛盾,巧妙利用數(shù)組的首地址和數(shù)組元素個數(shù)作為函數(shù)的參數(shù)可以實現(xiàn),該方法實質(zhì)是采用指針來實現(xiàn)。

      利用變量指針作為函數(shù)參數(shù)可以實現(xiàn)主調(diào)函數(shù)多變量的數(shù)據(jù)排序,如對于a = 3,b =51 ,c = 8三個變量通過函數(shù)實現(xiàn)a、b、c變量值從大到小排序,用傳統(tǒng)函數(shù)傳遞數(shù)值參數(shù)無法實現(xiàn),而巧妙利用指針該功能很容易實現(xiàn)。實現(xiàn)代碼如下,排序結(jié)果如圖2:

      #include

      void ThreeChange(int *,int *,int *);∥聲明排序函數(shù)ThreeChange,函數(shù)參數(shù)為指針

      void main()

      {

      int a = 3,b =51 ,c = 8;

      ThreeChange(&a,&b,&c);∥調(diào)用ThreeChange函數(shù)

      printf(" a = %d b = %d c = %d ",a,b,c);∥輸出a、b、c的值

      }

      ∥排序函數(shù)ThreeChange的定義,接收3個指針變量

      void ThreeChange(int * x,int * y,int * z)

      {

      int temp;

      ∥實現(xiàn)a的值存儲最大值

      if(*x < *y )

      {

      if(*y < *z)

      {

      temp = *x;

      *x = *z;

      *z = temp;

      }

      else

      {

      temp = *x;

      *x = *y;

      *y = temp;

      }

      }

      ∥實現(xiàn)y中存儲最大值

      if(*y < *z)

      {

      temp = *y;

      *y = *z;

      *z = temp;

      }

      }

      四、結(jié)語

      在C語言中,指針是其中的精髓,也是掌握的難點,只要真正掌握并理解了指針,在程序設(shè)計教學(xué)中能夠講清講透徹各知識點,在軟件開發(fā)中,能夠靈活利用指針編寫特殊類型的算法,可以編制執(zhí)行效率高的應(yīng)用軟件和系統(tǒng)軟件,并且充分利用指針操作硬件的特性,可以開發(fā)硬件控制系統(tǒng)和實時操作要求高的系統(tǒng)。本文只列舉了指針在整型變量、字符型變量、函數(shù)中的一些應(yīng)用,指針在字符串處理、函數(shù)、結(jié)構(gòu)體、文件操作、堆棧等中也有很強的應(yīng)用,期望本文的知識總結(jié)在教學(xué)中起到靈活利用指針的作用,在編寫程序時靈活利用指針實現(xiàn)高效的程序。

      圖3 a、b、c變量值排序結(jié)果

      猜你喜歡
      存儲空間數(shù)組指針
      JAVA稀疏矩陣算法
      電腦報(2022年13期)2022-04-12 00:32:38
      基于多種群協(xié)同進化算法的數(shù)據(jù)并行聚類算法
      蘋果訂閱捆綁服務(wù)Apple One正式上線
      綜藝報(2020年21期)2020-11-30 08:36:49
      JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
      電腦報(2020年24期)2020-07-15 06:12:41
      用好Windows 10保留的存儲空間
      偷指針的人
      娃娃畫報(2019年5期)2019-06-17 16:58:10
      為什么表的指針都按照順時針方向轉(zhuǎn)動
      尋找勾股數(shù)組的歷程
      基于改進Hough變換和BP網(wǎng)絡(luò)的指針儀表識別
      電測與儀表(2015年5期)2015-04-09 11:30:42
      ARM Cortex—MO/MO+單片機的指針變量替換方法
      万安县| 定陶县| 博爱县| 玉山县| 仪征市| 安平县| 稷山县| 罗山县| 开远市| 阳原县| 淄博市| 洛浦县| 化州市| 松溪县| 南岸区| 石渠县| 永新县| 苏尼特左旗| 容城县| 融水| 繁昌县| 芜湖县| 元朗区| 乌恰县| 闽清县| 石景山区| 卢湾区| 福建省| 辽阳市| 石棉县| 正阳县| 宁晋县| 宣汉县| 溆浦县| 城步| 尚志市| 齐齐哈尔市| 龙游县| 岳阳市| 裕民县| 通化市|