• 
    

    
    

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

      淺析C語(yǔ)言指針

      2020-08-15 13:33:03宋志飛
      商情 2020年34期
      關(guān)鍵詞:指針內(nèi)存

      【摘要】文章從C語(yǔ)言指針的基本概念入手,引出C語(yǔ)言指針、指針變量等多個(gè)知識(shí)點(diǎn)。并對(duì)程序中應(yīng)用C語(yǔ)言指針中較常出現(xiàn)的幾個(gè)錯(cuò)誤進(jìn)行分析講解。

      【關(guān)鍵詞】C語(yǔ)言? 指針? 內(nèi)存

      0引言

      指針的英文是pointer,是C語(yǔ)言中一個(gè)非常重要甚至可以說(shuō)是C語(yǔ)言的精髓,是C語(yǔ)言的一個(gè)重要標(biāo)識(shí),提到C語(yǔ)言,我們就會(huì)想到指針。指針是C語(yǔ)言受歡迎的一個(gè)重要原因,C語(yǔ)言也是目前非常流行的計(jì)算機(jī)程序語(yǔ)言。指針和數(shù)組、函數(shù)等之間數(shù)據(jù)的交互有著非常重要的關(guān)聯(lián)。在一些特殊情形下,只能用指針才能完成相應(yīng)的運(yùn)算,同時(shí),指針提高了代碼運(yùn)行的效率。

      同時(shí),指針又是C語(yǔ)言中最為復(fù)雜難學(xué)的知識(shí)點(diǎn)之一,若對(duì)指針的要點(diǎn)混淆不清,濫用或者誤用指針,將會(huì)減少程序的可讀性;錯(cuò)誤運(yùn)用的話,將會(huì)使程序編譯出錯(cuò)甚至崩潰。

      1指針

      根據(jù)C語(yǔ)言教程中提高的馮諾依曼理論,C語(yǔ)言程序代碼編譯運(yùn)行的時(shí)候是要寫入內(nèi)存單元。要想完全掌握指針的話,首先要理解內(nèi)存的概念,這其中包括:內(nèi)存單元、地址等概念。這里面提到的內(nèi)存是由很多空間大小相同的存儲(chǔ)單元組成。我們可以形象的將計(jì)算機(jī)的內(nèi)存設(shè)定成一個(gè)街道上的一間間相鄰的門面,每間門面都有唯一的門牌號(hào)碼來(lái)標(biāo)識(shí)來(lái)區(qū)分。C語(yǔ)言中,變量的值存儲(chǔ)在計(jì)算機(jī)的內(nèi)存中,每個(gè)變量都對(duì)應(yīng)占據(jù)一個(gè) 的位置。每個(gè)內(nèi)存位置都是有地址唯一確定并引用的,就好像街道上門面房都是由它們的門牌一樣。指針實(shí)際上是地址的另一個(gè)名稱。C語(yǔ)言提供了一部分操作符,通過(guò)這些操作符,能夠得到變量的地址,還可以經(jīng)過(guò)指針變量直接得到它所指向的值。

      由int類型變量的值為整數(shù),char類型變量的值為字符,我們能夠想到,指針從本質(zhì)上看,指針是一個(gè)值為內(nèi)存地址的變量,或者說(shuō)指針變量的值是地址。

      2指針變量

      這里我們先聲明一個(gè)指向整型變量的指針的語(yǔ)句:“int *p;”,p是一個(gè)指針,這個(gè)好理解,p只不過(guò)是一個(gè)變量而已,與我們知道的整型變量、字符型變量等并沒(méi)有什么區(qū)別。我們使用“int *p”聲明一個(gè)指針變量,實(shí)質(zhì)上是在內(nèi)存中聲明一個(gè)一段寬度的內(nèi)存空間,并將其命名為p。p和整型變量、字符型變量等沒(méi)有實(shí)質(zhì)區(qū)別。我們還有這樣的語(yǔ)句:“p=&i;”, &叫做取地址符,就是返回變量i的地址編號(hào)?;蛘哒f(shuō),整句的含義就是將i的地址的編號(hào)賦值給p,即在p中寫上了i的地址編號(hào),假設(shè)i的地址編號(hào)是6,變量i的值是30。

      執(zhí)行完p=&i之后,在內(nèi)存中,p的值是6,這里的6就是變量i的地址編號(hào),p就指向了變量i。因此,我們稱p為指針,我們這里要記住,指針變量的存儲(chǔ)的內(nèi)容就是內(nèi)存的地址編號(hào)。我們這里又有如下語(yǔ)句:“printf(”%d”,*p);”,我們這里可以這樣去讀它:p的內(nèi)容所指的地址的內(nèi)容,或者形象的理解成p門牌號(hào)碼上所對(duì)應(yīng)的房子。P的內(nèi)容是6,也可以說(shuō)p指向內(nèi)存編號(hào)為6 的地址。*p就是它所指地址的內(nèi)容,即地址編外為6上的內(nèi)容了,就是30這個(gè)內(nèi)容了。所以運(yùn)行程序,在屏幕上就會(huì)打印輸出30。我們可以將“printf(”%d”,*p);”理解成“printf(”%d”,i);”這樣就不難理解指針變量這個(gè)概念了。

      3指針的作用

      指針到底有什么作用呢?指針能夠間接訪問(wèn)變量,也可以提升代碼的訪問(wèn)效率,還能夠?qū)崿F(xiàn)動(dòng)態(tài)內(nèi)存分配等。C語(yǔ)言編譯器在編譯的時(shí)候,代碼中的變量、函數(shù)等都要對(duì)其分配內(nèi)存,因此,程序代碼一旦開始運(yùn)行了,就會(huì)直接找到對(duì)應(yīng)的內(nèi)存單元和地址。C語(yǔ)言中的指針,實(shí)質(zhì)上就是對(duì)底層內(nèi)存單元的操作。

      指針能夠通過(guò)間接訪問(wèn)這個(gè)特性來(lái)解決這些問(wèn)題。舉例子,在函數(shù)間是不可以共享數(shù)據(jù)的,但是有了指針后,就能夠間接用到函數(shù)之外的數(shù)據(jù),即將數(shù)據(jù)的地址傳遞到函數(shù)中就可以了。

      使用指針,能夠讓開發(fā)者在底層或者抽象層與內(nèi)存進(jìn)行打交道,更加高效直接。能夠化解很多直接訪問(wèn)無(wú)法完成的操作。比如:像函數(shù)直接的數(shù)據(jù)分享、返回值不可以是相同的的一個(gè)值以上等很多問(wèn)題。還有后面要學(xué)到的對(duì)文件的操作就離不開指針的應(yīng)用。

      使用指針能夠?qū)⑦壿嬯P(guān)系上有聯(lián)系的數(shù)據(jù)、函數(shù)關(guān)聯(lián)起來(lái)。例如,后面要學(xué)到的 鏈表內(nèi)容中,存儲(chǔ)不連續(xù)的數(shù)據(jù)但在邏輯上有關(guān)系的,就要用到指針的內(nèi)容。

      4總結(jié)

      C語(yǔ)言的指針,使用起來(lái)非常靈活,在實(shí)際運(yùn)用中變化很多。對(duì)于初學(xué)者來(lái)說(shuō),有點(diǎn)難度,但對(duì)于完全掌握C語(yǔ)言指針的人來(lái)說(shuō),就能夠?qū)⒅羔樳\(yùn)用到實(shí)際的應(yīng)用中,寫出優(yōu)秀的程序代碼,實(shí)現(xiàn)很多其他計(jì)算機(jī)語(yǔ)言無(wú)法實(shí)現(xiàn)的功能。指針的學(xué)習(xí)要不斷理解和實(shí)踐,不斷的去挖掘其精髓,從而完全掌握C語(yǔ)言的精髓。

      參考文獻(xiàn):

      [1]Stephen Prata, C Primer Plus(第6版)中文版[M].北京:人民郵電出版社, 2016.4.

      [2]譚浩強(qiáng),C 語(yǔ)言設(shè)計(jì)[M].北京:清華大學(xué)出版社,2000.[3]GregPerry.寫給大家看的C語(yǔ)言書[M].人民郵電出版社,2010.

      作者簡(jiǎn)介:宋志飛(1985-),漢族,男,安徽太湖人,講師,碩士研究生,主要從事蟻群算法及應(yīng)用、計(jì)算機(jī)軟件及應(yīng)用、職業(yè)教育等方面的研究。

      猜你喜歡
      指針內(nèi)存
      外部高速緩存與非易失內(nèi)存結(jié)合的混合內(nèi)存體系結(jié)構(gòu)特性評(píng)測(cè)
      垂懸指針檢測(cè)與防御方法*
      “春夏秋冬”的內(nèi)存
      偷指針的人
      為什么表的指針都按照順時(shí)針?lè)较蜣D(zhuǎn)動(dòng)
      內(nèi)存搭配DDR4、DDR3L還是DDR3?
      基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
      ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
      基于內(nèi)存的地理信息訪問(wèn)技術(shù)
      指針在C語(yǔ)言中的作用分析
      河南科技(2012年18期)2012-08-15 00:48:29
      武义县| 四川省| 双柏县| 淮安市| 义乌市| 临江市| 泸定县| 炉霍县| 丽江市| 绥宁县| 昌都县| 木里| 丁青县| 安塞县| 景洪市| 搜索| 古田县| 池州市| 长顺县| 通榆县| 邮箱| 宁晋县| 紫阳县| 锦州市| 宜宾市| 图们市| 进贤县| 昌平区| 黎川县| 峨眉山市| 大厂| 陇西县| 綦江县| 米林县| 盖州市| 德江县| 社会| 南安市| 应城市| 静宁县| 阿克苏市|