• 
    

    
    

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

      C語言程序設(shè)計(jì)指針操作分析與研究

      2020-10-10 01:44:28
      魅力中國 2020年32期
      關(guān)鍵詞:字符串數(shù)組指針

      (貴州城市職業(yè)學(xué)院,貴州 貴陽 550025)

      指針是C語言程序?qū)W習(xí)的重點(diǎn)和難點(diǎn),對程序設(shè)計(jì)人員來說熟練掌握指針并應(yīng)用于程序設(shè)計(jì)非常有必要。程序設(shè)計(jì)中正確應(yīng)用指針可以提高程序的執(zhí)行效率,能夠快速實(shí)現(xiàn)動態(tài)數(shù)組的建立,能夠高效地處理字符串等數(shù)據(jù)。

      一、指針的定義

      指針是C語言程序設(shè)計(jì)中一個重要的概念,指針是一種與普通變量不同的特殊的變量,普通變量主要用來存儲程序運(yùn)算時需要處理的數(shù)據(jù)或值,而指針則是內(nèi)存單元地址。在程序設(shè)計(jì)過程中我們對指針的內(nèi)存單元地址不感興趣,感興趣的是這個內(nèi)存單元地址所存儲的變量或函數(shù),即指針?biāo)赶虻淖兞炕蚝瘮?shù)。這個過程如同客戶點(diǎn)菜時,吸引客戶的不是菜單,而是菜單所“指向”的菜。要注意的是指針和指針變量之間的差別,所謂指針就是存儲單元地址號,指針變量則是一個能夠存儲地址值的變量,它可以通過存儲指針變量的地址值間接地訪問指針變量所指向的變量值[1]。

      二、指針的操作與問題分析

      C程序中指針可以指向數(shù)據(jù)類型中的所有類型,如普通、結(jié)構(gòu)、函數(shù)等,指針甚至可以實(shí)現(xiàn)指向指針,指針的操作使用與其所指向的數(shù)據(jù)類型有關(guān)。例如指向數(shù)值型的指針能夠進(jìn)行加減乘除相關(guān)數(shù)學(xué)運(yùn)算,指向字符串型指針可以完成字符串的輸入、輸出,指向結(jié)構(gòu)體的指針可以訪問結(jié)構(gòu)體內(nèi)字段數(shù)據(jù),指向函數(shù)的指針是函數(shù)調(diào)用的接口。在指針的操作使用過程中要注意以下幾點(diǎn):

      (一)定義指針時需要做初始化,如果指針指向的數(shù)據(jù)還沒有明確,可以初始化為0或NULL。如果只定義指針而不做初始化容易破壞系統(tǒng)數(shù)據(jù)和引起系統(tǒng)故障。例如:int *p;*p=10;

      p是一個指針變量,在沒有明確地址指向的時候即附值10,當(dāng)把10附值給p時,就可能會覆蓋原來的信息,甚至破壞系統(tǒng)。因此,在給指針附值時需要做地址指向初始化,正確的代碼為:

      Int b,*p;p=&b;*p=10;或者改為int *p;p=(int *)malloc(sizeof(int));*p=10;

      (二)字符指針使用錯誤

      C語言中不可以定義字符串變量,字符串的處理與應(yīng)用可以借助字符數(shù)組或字符指針來完成。字符數(shù)組或字符指針在處理字符串時有區(qū)別:應(yīng)用字符數(shù)組處理字符串時,系統(tǒng)為字符串?dāng)?shù)據(jù)分配固定連續(xù)的存儲空間,數(shù)據(jù)名即該存儲空間的首地址;使用字符指針管理字符串時,系統(tǒng)不會為字符指針分配存儲空間,而僅是系統(tǒng)中一個隨機(jī)的地址值。如:

      Char *s1,s2[60];scanf(“%s”,s1);s2=”abcdefghijk”;

      輸入語句scanf(“%s”,s1)雖然格式正確,但可能會導(dǎo)致s1中的信息丟失;s2=”abcdefghijk”附值語句中s2是數(shù)組名,是一個指針常量,代表數(shù)組的首地址,其值不能改變,直接附值錯誤。因而,正確的代碼應(yīng)為:Char*s1,s2[20];s1=(char *)malloc(60);scanf(“%s”,s1);strcpy(s2,”abcdef gh”);或者改為:char s1[60],*s2;scanf(“%s”,s1);s2=”abcdefgh”;

      在處理字符串時字符指針能夠直接指向字符串常量的首地址,但字符數(shù)組則不行。

      (三)當(dāng)指針指向數(shù)組類型數(shù)據(jù)時,指針能夠替換數(shù)組名使用。如下代碼:

      int b[3]={1,2,3};int *p=b則p[0]、p[1]、p[2]與b[0]、b[1]、b[2]對應(yīng)值相同。

      (四)指針能夠?qū)崿F(xiàn)受限制的加減運(yùn)算

      C語言指針完成自加或自減時與普通數(shù)值型變量有區(qū)別,在進(jìn)行自加或自減運(yùn)算時必須保證指針進(jìn)行加減運(yùn)算后結(jié)果仍有意義。當(dāng)C語言指針指向數(shù)組后,指針的加減運(yùn)算變得有意義,進(jìn)行自加運(yùn)算時指針指向數(shù)組中的下一元素;進(jìn)行自減運(yùn)算時指針指向數(shù)組中的上一元素。如果指向相同數(shù)組的兩指針進(jìn)行相減,即地址大的減地址小的,結(jié)果則是兩個指針間數(shù)組元素的個數(shù)[2]。

      批量處理相同的數(shù)據(jù)可以運(yùn)用數(shù)組來實(shí)現(xiàn),定義數(shù)組后數(shù)組中的每個元素均可以作為單獨(dú)的指針常量來使用。

      (五)形參指針調(diào)用缺少地址,如下程序:

      上述代碼能正常編譯和執(zhí)行,但運(yùn)行結(jié)果沒有實(shí)現(xiàn)交換a與b的值,這是因?yàn)樾螀橹羔?,?shí)參調(diào)用時必須為對應(yīng)的地址??梢詫⒄{(diào)用函數(shù)改為:s(int *x,int *y),系統(tǒng)編譯時若主調(diào)函數(shù)沒有按要求傳送地址則報錯,上述修改可以避免調(diào)用時未傳送地址值錯誤。

      (六)一維二維數(shù)組名的正確使用

      C語言中一維和二維數(shù)組名均表示數(shù)組元素的首地址。但二者有區(qū)別,一維數(shù)組表示的是所有元素中第一個元素的首地址,二維數(shù)組表示的是第0行的首地址,在程序設(shè)計(jì)時要注意區(qū)別,如下程序:

      程序能通過編譯和執(zhí)行,但結(jié)果不對,問題出現(xiàn)在把二維數(shù)組a的行地址傳給了指標(biāo)p,指針指向行但不指向元素,因此,不能輸出數(shù)組值。可將for(p=a;p

      上例說明a是數(shù)組第0行的首地址,*a是數(shù)組第0行第0列元素的首地址[3]。

      (七)動態(tài)空間分配函數(shù)的應(yīng)用

      應(yīng)用動態(tài)空間分配函數(shù)malloc()分配系統(tǒng)內(nèi)存空間時易出錯,如下程序:

      上述代碼編譯通過,但概念不正確,malloc(8)附值指針p前,編譯程序假定了該返回值為整數(shù),但指針p不能被理想的作為整數(shù)看待,需要對空間分配成功與否作出提前判定[4]。

      三、結(jié)束語

      指針是C語言程序設(shè)計(jì)中一種重要的數(shù)據(jù)類型,其在C語言程序設(shè)計(jì)中具有十分重要的作用和地位,通過指針的使用,可以很容易的處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)出高效率的程序。當(dāng)然,C語言程序設(shè)計(jì)指針難以理解、易出錯,只有在實(shí)踐中不斷總結(jié)學(xué)習(xí)經(jīng)驗(yàn),才能更好的應(yīng)用C語言指針,才能設(shè)計(jì)出高質(zhì)量的程序。

      猜你喜歡
      字符串數(shù)組指針
      JAVA稀疏矩陣算法
      電腦報(2022年13期)2022-04-12 00:32:38
      JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
      電腦報(2020年24期)2020-07-15 06:12:41
      偷指針的人
      娃娃畫報(2019年5期)2019-06-17 16:58:10
      為什么表的指針都按照順時針方向轉(zhuǎn)動
      尋找勾股數(shù)組的歷程
      基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識別
      電測與儀表(2015年5期)2015-04-09 11:30:42
      ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
      一種新的基于對稱性的字符串相似性處理算法
      依據(jù)字符串匹配的中文分詞模型研究
      VB數(shù)組在for循環(huán)中的應(yīng)用
      考試周刊(2012年88期)2012-04-29 04:36:47
      宜兰县| 宁陕县| 尤溪县| 内江市| 岫岩| 琼中| 景谷| 大港区| 务川| 开江县| 永德县| 墨脱县| 玛沁县| 花莲市| 阜平县| 抚远县| 靖江市| 嘉荫县| 宁国市| 寻乌县| 通榆县| 慈溪市| 邯郸县| 和硕县| 仪陇县| 怀远县| 肃宁县| 大同县| 红河县| 武宁县| 黄骅市| 正安县| 阜南县| 沙田区| 洛阳市| 吉首市| 凤阳县| 南乐县| 吉隆县| 容城县| 冀州市|