• 
    

    
    

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

      ?

      C語言中指針探討

      2016-11-18 20:14:48李帥于子鈞谷浩榮
      藝術(shù)科技 2016年9期
      關(guān)鍵詞:常量數(shù)據(jù)結(jié)構(gòu)指針

      李帥 于子鈞 谷浩榮

      摘 要:C語言是某一個實體的地址,當(dāng)我們在使用C語言進(jìn)行編寫程序的時候,就一定會使用上指針,指針的操作是編寫程序的一個點。如何更好地使用指針,將是我們進(jìn)行更好的書寫程序的關(guān)鍵。指針變量的運用是C語言程序設(shè)計的重要核心部分。程序中的數(shù)據(jù)在內(nèi)存中的有效讀取及程序執(zhí)行效率的提高多數(shù)情況取決于是否靈活使用指針。本文旨在探索C語言程序設(shè)計實踐過程中如何正確操作指針變量,從而方便操作與之關(guān)聯(lián)的字符串、數(shù)組、函數(shù)間數(shù)據(jù)的傳遞,繼而解決C語言程序設(shè)計中的許多實際問題。

      關(guān)鍵詞:C語言;指針;數(shù)組;地址

      地址:在計算機中,所有的數(shù)據(jù)都是存放在存儲器中的。一般把存儲器中的一個字節(jié)稱為一個內(nèi)存單元,不同的數(shù)據(jù)類型所占用的內(nèi)存單元數(shù)不等,如整型量占2個單元,字符量占1個單元等,在前面已有詳細(xì)的介紹。為了正確地訪問這些內(nèi)存單元,必須為每個內(nèi)存單元編上號。根據(jù)一個內(nèi)存單元的編號即可準(zhǔn)確地找到該內(nèi)存單元。內(nèi)存單元的編號也叫做地址。嚴(yán)格地說,一個指針是一個地址,是一個常量。而一個指針變量卻可以被賦予不同的指針值,是變量。但常把指針變量簡稱為指針。為了避免混淆,我們中約定:“指針”是指地址,是常量,“指針變量”是指取值為地址的變量。定義指針的目的是為了通過指針去訪問內(nèi)存單元,在C語言中,一種數(shù)據(jù)類型或數(shù)據(jù)結(jié)構(gòu)往往都占有一組連續(xù)的內(nèi)存單元。用“地址”這個概念并不能很好地描述一種數(shù)據(jù)類型或數(shù)據(jù)結(jié)構(gòu),而“指針”雖然實際上也是一個地址,但它卻是一個數(shù)據(jù)結(jié)構(gòu)的首地址,它是“指向”一個數(shù)據(jù)結(jié)構(gòu)的,因而概念更為清楚,表示更為明確。這也是引入“指針”概念的一個重要原因。因為數(shù)組或函數(shù)都是連續(xù)存放的。通過訪問指針變量取得了數(shù)組或函數(shù)的首地址,也就找到了該數(shù)組或函數(shù)。這樣一來,凡是出現(xiàn)數(shù)組,函數(shù)的地方都可以用一個指針變量來表示,只要該指針變量中賦予數(shù)組或函數(shù)的首地址即可。這樣做,將會使程序的概念十分清楚,程序本身也精練,高效。

      1 指針

      所謂的指針,本質(zhì)上就是地址。指針變量的值,就是地址的值,當(dāng)取值運算時就是到對應(yīng)的內(nèi)存地址上,依照指針類型進(jìn)行取值。指針是一個地址,指向的是個類型:我們知道,c語言中的類型有int,char,bool(這個不常用),一般我們使用int,char就可以滿足一般的類型需求的,如果對于變量的長度過大,就是用long,float,double,關(guān)于各個類型使用的長度問題,可以使用sizeof(int)或者sizeof(long)來查看各個類型,在系統(tǒng)中的小。

      而指針就是一個8個字節(jié)(64系統(tǒng))。在C語言中,允許用一個變量來存放指針,這種變量稱為指針變量。因此,一個指針變量的值就是某個內(nèi)存單元的地址或稱為某內(nèi)存單元的指針。圖中,設(shè)有字符變量C,其內(nèi)容為“K”(ASCII碼為十進(jìn)制數(shù)75),C占用了011A號單元(地址用十六進(jìn)數(shù)表示)。設(shè)有指針變量P,內(nèi)容為011A,這種情況我們稱為P指向變量C,或說P是指向變量C的指針。嚴(yán)格地說,一個指針是一個地址,是一個常量。而一個指針變量卻可以被賦予不同的指針值,是變量。但常把指針變量簡稱為指針。為了避免混淆,我們中約定:“指針”是指地址,是常量,“指針變量”是指取值為地址的變量。定義指針的目的是為了通過指針去訪問內(nèi)存單元。

      指針指向的是地址,地址指向的是內(nèi)容:

      我們需要一個變量,來存儲地址,這個變量的值是地址,但是我們可以通過修改變量的值,來不斷地改變地址,但是,我們?nèi)绻枰淖冊搨€地址的值的話,就需要,對地址的值進(jìn)行修改,而不改變地址。

      inta=10;

      int*p;

      p=&a;

      *p=11;

      a=?

      這里我們看到,p是一個變量,我們使用p來存儲變量a的地址,這是,我們使用*p對于這個變量進(jìn)行賦值,那么a的值最后,是多少呢,結(jié)果是11,因為我們使用*p賦值,就相當(dāng)于a=11,賦值效果一樣的。

      指針的指針,是面對于指針的變量:

      我們說,指針的指針的時候,就有點不清楚了,到底怎么區(qū)分指針和指針的指針呢?

      char*p;

      char**pr;

      pr=&p;

      我們這樣看就清楚了一點,char*(*pr);*pr是一個存儲的值為指針的變量,pr就是存儲上個變量地址的變量。整合起來就是,pr是一個存儲的值為指針的地址的變量。這樣,我們就基本,對于指針有一個直接的了解了。既然根據(jù)內(nèi)存單元的編號或地址就可以找到所需的內(nèi)存單元,所以通常也把這個地址稱為指針。內(nèi)存單元的指針和內(nèi)存單元的內(nèi)容是兩個不同的概念。

      2 指針的類型指針的類型

      從語法的角度看,你只要把指針聲明語句里的指針名字去掉,剩下的部分就是這個指針的類型。這是指針本身所具有的類型。讓我們看看例一中各個指針的類型:

      第一,int*ptr;//指針的類型是int*。

      第二,char*ptr;//指針的類型是char*。

      第三,int**ptr;//指針的類型是int**。

      第四,int(*ptr)[3];//指針的類型是int(*)[3]。

      第五,int*(*ptr)[4];//指針的類型是int*(*)[4]。

      3 指針指向的類型

      從語法上看,你只須把指針聲明語句中的指針名字和名字左邊的指針聲明符*去掉,剩下的就是指針?biāo)赶虻念愋?。例如?/p>

      第一,int*ptr;//指針?biāo)赶虻念愋褪莍nt。

      第二,char*ptr;//指針?biāo)赶虻念愋褪莄har。

      第三,int**ptr;//指針?biāo)赶虻念愋褪莍nt*。

      第四,int(*ptr)[3];//指針?biāo)赶虻念愋褪莍nt()[3]。

      第五,int*(*ptr)[4];//指針?biāo)赶虻念愋褪莍nt*()[4]。

      4 指針變量與變量指針

      常量指針:該指針是一個常量,不可改變,指向某個地址之后就不能改變了,但他所指向的單元是可以改變的,很容易與指針常量弄混,所以一般讀的時候讀成常量指向,從字面上看就是一個常量指向某個地址。指針常量說明該指針?biāo)赶虻氖莾?nèi)容不可改變,但其自身是一個變量,可以改變指向的內(nèi)容,讀的時候讀成指向常量,從字面上看就是指向某個常量。

      5 C語言指針的作用

      指針可以直接操作內(nèi)存,理解為直接操作內(nèi)存的優(yōu)點有哪些。

      第一,效率更高,這個很容易理解,直接操作內(nèi)存,效率必然更高。

      第二,可以寫復(fù)雜度更高的數(shù)據(jù)結(jié)構(gòu),這個也好理解,程序員可以操作內(nèi)存,當(dāng)然可以寫出靈活、復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。

      第三,編寫出簡潔、緊湊、高效的程序。

      6 結(jié)語

      C語言是一種面向過程的程學(xué)設(shè)計語言,在代碼量超過一定大額數(shù)額后程序設(shè)計的效率會明顯下降,這是它相對于其他的面向?qū)ο蟮某绦蛟O(shè)計語言的缺點,但是它的優(yōu)點是可以比其他的語言更加的接近于硬件底層,這種特性直接導(dǎo)致它可以用來設(shè)計計算機操作系統(tǒng),Unix就是它的產(chǎn)物!所以說C語言有著其他的語言不可替代的功能,既有缺點,也有優(yōu)點。

      參考文獻(xiàn):

      [1] 梁馮蘭.對C語言中指針的探討[J].和田師范專科學(xué)校學(xué)報,2006,26(5).

      [2] 許晶. C語言中指針運用與探索[J].中國科教創(chuàng)新導(dǎo)刊,2013(23).

      作者簡介:李帥(1997—),男,湖南衡陽人,沈陽理工大學(xué)學(xué)生。

      于子鈞(1995—),男,遼寧丹東人,沈陽理工大學(xué)學(xué)生。

      谷浩榮(1996—),男,遼寧營口人,沈陽理工大學(xué)學(xué)生。

      猜你喜歡
      常量數(shù)據(jù)結(jié)構(gòu)指針
      科學(xué)照亮世界
      ——卡文迪什測定萬有引力常量
      偷指針的人
      娃娃畫報(2019年5期)2019-06-17 16:58:10
      為什么表的指針都按照順時針方向轉(zhuǎn)動
      “翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
      高職高專數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
      中國市場(2016年45期)2016-05-17 05:15:48
      低氧低分壓環(huán)境下泡塑吸附火焰原子吸收光譜法測定常量金
      西藏科技(2015年1期)2015-09-26 12:09:20
      基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識別
      電測與儀表(2015年5期)2015-04-09 11:30:42
      ARM Cortex—MO/MO+單片機的指針變量替換方法
      TRIZ理論在“數(shù)據(jù)結(jié)構(gòu)”多媒體教學(xué)中的應(yīng)用
      《數(shù)據(jù)結(jié)構(gòu)》教學(xué)方法創(chuàng)新探討
      河南科技(2014年5期)2014-02-27 14:08:57
      壶关县| 新源县| 东平县| 永春县| 黄石市| 伊川县| 江油市| 五华县| 加查县| 衡阳市| 安图县| 宁蒗| 金川县| 黄石市| 临海市| 霸州市| 巩义市| 佛教| 云阳县| 中卫市| 四会市| 弋阳县| 略阳县| 安吉县| 永春县| 花垣县| 阳曲县| 新蔡县| 黄梅县| 隆化县| 饶河县| 左云县| 沾益县| 西乌| 怀集县| 中牟县| 杭锦旗| 昌都县| 山阳县| 珲春市| 大姚县|