中国韩国日本在线观看免费,A级尤物一区,日韩精品一二三区无码,欧美日韩少妇色

當(dāng)前位置:主頁 > 科技論文 > 計(jì)算機(jī)論文 >

C語言指針運(yùn)用探討

發(fā)布時(shí)間:2015-02-12 19:44

摘 要:

摘 要:C語言是我們常用的一種計(jì)算機(jī)編程工具,在計(jì)算機(jī)的各個(gè)領(lǐng)域都得到廣泛的引用。C語言的指針是C語言編程技術(shù)中的核心,也是C語言中最具特色的部分。運(yùn)用指針可以靈活的解決很多程序編輯問題,是很多其他高級(jí)程序編輯語言不能代替的。

關(guān)鍵詞:

關(guān)鍵詞:C語言 指針 計(jì)算機(jī)編程

  1 C語言指針的基本內(nèi)涵

  在C語言中存在一種指針變量,這種變量與普通的變量一樣在定義了之后都會(huì)在計(jì)算機(jī)中占據(jù)一定的位置,其中儲(chǔ)存這一定的數(shù)據(jù),只是這里面儲(chǔ)存的數(shù)據(jù)是一個(gè)地址。這個(gè)地址指示了另一個(gè)數(shù)據(jù)的位置。通常來說,對(duì)于指針變量的定義:指針類型數(shù)據(jù)的數(shù)據(jù)類型是關(guān)鍵字,指針變量中存放的數(shù)據(jù)是另一個(gè)數(shù)據(jù)的儲(chǔ)存地址,指針變量的性質(zhì)就是它儲(chǔ)存的位置中的數(shù)據(jù)的性質(zhì)。

  2 C語言指針在應(yīng)用過程中的優(yōu)勢分析

  C語言指針是C語言中的重要組成部分,在C語言的使用過程中如果能夠熟悉的使用C語言指針,能夠幫我們解決很多實(shí)際中的難題,可以使很多復(fù)雜的問題變得簡單。用指向性的單變量指針變量作為一個(gè)函數(shù)的參數(shù),能夠得到多個(gè)變化后的值。通常在運(yùn)用函數(shù)調(diào)用都是有且只有一個(gè)函數(shù)值會(huì)被得到,而在應(yīng)用了指針函數(shù)之后,通過一個(gè)變量就能得到很多變化之后的值。在指向性數(shù)組之中是有指針函數(shù)的話能夠短時(shí)間內(nèi)得到很多的結(jié)果,對(duì)于數(shù)組的處理效率會(huì)得到很大的提升,所以說在熟練的掌握了數(shù)組之后可以用數(shù)組來處理數(shù)組能夠極為有效的提高對(duì)數(shù)組的處理效率。指向性的字符串在應(yīng)用了指針變量之后能夠減少數(shù)據(jù)儲(chǔ)存的空間,指針變量本身就可以儲(chǔ)存數(shù)據(jù)的位置,所以在使用了指針變量之后字符串的存儲(chǔ)空間能夠得到很大的提升,從而提高程序工作的效率。指向結(jié)構(gòu)體變量的指針作為函數(shù)的參數(shù)的時(shí)候能夠在很大程度上節(jié)省時(shí)間和存儲(chǔ)所占的空間,從而提高程序的執(zhí)行效率。指向量FILE類型的結(jié)構(gòu)體中應(yīng)用指示變量能夠很快的找到與之相關(guān)的文件,從而更快的實(shí)現(xiàn)對(duì)文件的訪問。

  3 C語言指針運(yùn)用中的問題

  C語言指針在與C語言中的數(shù)組、函數(shù)以及運(yùn)算符號(hào)結(jié)合之后,通常在說明的時(shí)候會(huì)具有很高的復(fù)雜行,使得人們對(duì)于指針的含義理解起來十分的困難,下面是對(duì)人們?cè)谑褂肅語言指針是所犯的錯(cuò)誤。

  3.1 懸游指針

  懸游指針是一種使用的未進(jìn)行出事話的指針p,這個(gè)指針并不是說沒有值,只是它的指示不確定的,同時(shí),因?yàn)樗闹挡淮_定的原因,這個(gè)指針的指向也是不確定的,這中不確定性就有可能會(huì)破壞整個(gè)系統(tǒng)的正常工作,是一種很危險(xiǎn)的指針類型,在使用過程中這種指針很有可能會(huì)對(duì)程序造成不可挽回的災(zāi)難性后果。

  int a [5 ] , i ,* p;

  fo r( i= 0; i < 5; i+ + ) scanf( "% d", p+ + ) ;

  應(yīng)在fo r語句前加上語句"p= a; ",使p初始化[3 ] 。

  3.2 指針指示類型錯(cuò)誤

  main( ) { static int a [3] [4 ]= { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; int* p; for ( p=a; p < a+ 12; p+ + ) printf ( "% d",* p) ; }

  在這個(gè)程序當(dāng)中將p=a【0】錯(cuò)用為了p=a,雖然在程序當(dāng)中a和a【0】的值是相同的,但是a【0】是一級(jí)int型指針,a是二級(jí)的,二者的指針類型不同,指示的對(duì)象也不行同,所以說這個(gè)程序之中p只能接受a【0】不能接受a。

  3.3 指針偏移

  main( ) {char * p, s [80]; p= s;

  do {g ets( s) ;

  w hi le(* p) print f ( "% x h",* p+ + ) ;

  }w hi le( strcmp( s, "end") ; }

  在上面的這個(gè)程序中,當(dāng)指針初始化p=s進(jìn)入循環(huán)之后p會(huì)進(jìn)行自加,這可能會(huì)使得p的指針轉(zhuǎn)移到字符的其他位置中去,甚至可能會(huì)使p轉(zhuǎn)到字符串的另一變量或者程序代碼之中。這種情況是非常危險(xiǎn)的,對(duì)于整個(gè)程序的運(yùn)行來說都是可能會(huì)造成不可挽回的后果。

  3.4 * 和[ ]在定義時(shí)只是說明作用, 不是運(yùn)算符

  &、* 、[ ]是C語言中的三種運(yùn)算符號(hào),他們的含義分別是地址運(yùn)算符、指針運(yùn)算符跟下標(biāo)運(yùn)算符。人們對(duì)于這三個(gè)運(yùn)算符所代表的意義是很明確的,并沒有什么錯(cuò)誤的理解。但是在實(shí)際的應(yīng)用中,很多人卻將他們看作是運(yùn)算符號(hào)。&、* 、[ ]這三個(gè)運(yùn)算符在運(yùn)算的過程中只是起到說明的作用,并不能看做是運(yùn)算符。

  3.5 用整數(shù)值對(duì)指針進(jìn)行賦值

  在C語言之中,指針的值就是他所指向的地址,準(zhǔn)確的說指針的數(shù)值在程序的運(yùn)算過程過程中就是一個(gè)整數(shù)數(shù)值,,但是卻不能夠直接講一個(gè)整數(shù)的數(shù)值賦予給指針。因?yàn)橹羔樀恼麛?shù)數(shù)值是有方向性的,但是在程序語言中的整數(shù)數(shù)值卻是沒有方向的。將這個(gè)沒有方向的整數(shù)數(shù)值賦予到指針的時(shí)候,指針就真的只是一個(gè)整數(shù)數(shù)值而不能指向一個(gè)地址。

  int num;

  int* pt;

  num = 192635;

  p= num;

  最后一個(gè)語句的目的是使指針指向地址192635( 十進(jìn)制), 編譯時(shí)系統(tǒng)會(huì)提示這個(gè)語句有錯(cuò)誤。

  3.6 指針之間值的相互賦予

  # inc lude / a lloc. h0

  m a in( )

  { int* m, * n;

  m = ( int* ) m allo c( sizeof( int) ) ;

  n= ( int* ) m a llo c( sizeof( int) );

  * m = 78;

  * n= 82;

  m = n;

  printf( d% d, % dd,

  * m, * n); } [ 7]

  在C語言之中,指針的值是可以相互賦予的,比如說在這個(gè)程序之中“m=n”就是講n的指向賦予給了m中去,但是原來已經(jīng)賦予給m的內(nèi)存空間卻沒有被釋放出去,使得這個(gè)內(nèi)存空間成為了無效的內(nèi)存空間,但是在實(shí)際的程序運(yùn)行中又需要對(duì)m進(jìn)行反復(fù)的應(yīng)用,這也就使得內(nèi)存空間變得十分的緊張。所以我們?cè)谶M(jìn)行指針之間值的賦予是通常會(huì)將被賦予的指針的內(nèi)存空間進(jìn)行釋放,將其中的內(nèi)存空間賦予給一個(gè)無用的指針,然后再將有用的值賦予到該指針中去。使程序在反復(fù)運(yùn)行時(shí)不會(huì)存在內(nèi)存不足的情況。指針之間的賦值不當(dāng)會(huì)造成內(nèi)存緊張,嚴(yán)重的時(shí)候甚至?xí)斐伤罊C(jī)現(xiàn)象。

  3.7 指針賦值只能存在于相同類型之間

  C語言中的指針具有不同的類型,而在進(jìn)行指針之間的賦值的時(shí)候,只能在相同類型的指針進(jìn)行賦值。如果兩個(gè)指針的類型不相符合的話是不能夠進(jìn)行賦值的。如果一個(gè)指針被賦予了其他類型指針的數(shù)據(jù),將會(huì)在程序的運(yùn)行中造成錯(cuò)誤。可能會(huì)造成程序的運(yùn)行錯(cuò)誤甚至于使得程序崩潰。

  4 結(jié)語

  C語言中的指針使得C語言的應(yīng)用變得十分靈活,使得許多問題的解決變得方便了很多。雖然說指針的應(yīng)用使得對(duì)問題的解決變得靈活簡單,但是許多C語言的初學(xué)者因?yàn)閷?duì)指針的定義理解的不夠透徹,在使用指針的過程中會(huì)犯很多錯(cuò)誤,影響程序的正常運(yùn)行。

  參考文獻(xiàn):

  [1]張威虎.C語言指針運(yùn)用探討[J].延安大學(xué)學(xué)報(bào):自然科學(xué)版,2000(3):25-27.

  [2]史娟.C語言指針教學(xué)中的常見問題及教法探析[J].電腦知識(shí)與技術(shù),2012(17):4168-4169,4172.

  [3]任磊.C語言指針的運(yùn)用及常見錯(cuò)誤分析[J].商丘師范學(xué)院學(xué)報(bào),2008(12):91-93.

 



本文編號(hào):14557

資料下載
論文發(fā)表

本文鏈接:http://www.lk138.cn/kejilunwen/jisuanjikexuelunwen/14557.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶afee8***提供,本站僅收錄摘要或目錄,作者需要?jiǎng)h除請(qǐng)E-mail郵箱bigeng88@qq.com