999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺析C語言中指針的應用

2014-10-20 11:13:10謝忠東
科技經濟市場 2014年8期

謝忠東

摘 要:指針是C語言的精華部分,也是C語言課程的重點和難點章節之一,在C語言編程中起著重要的作用。只有理解了指針并能靈活運用指針,才算真正學會了C語言。因此我們在C語言教學過程中應特別注意指針,引導學生正確靈活地應用指針,編制高效的程序,發揮C語言的優勢。

關鍵詞:C語言;指針;函數;數組

指針是C語言中一個重要的概念,是C語言課程的重點難點章節之一,也是C語言的精華部分,在C語言編程中起著重要的作用。利用指針可以編寫靈活高效的程序。只有理解了指針并能靈活運用指針,才算真正學會了C語言。因此我們在C語言教學過程中應特別注意指針單元,引導學生正確靈活地應用指針,編制高效的程序,發揮C語言的優勢。但由于指針是一種特殊的數據類型,概念較復雜,大多數初學者感到較難理解,使用不好反而會帶來一些麻煩。

1 理解指針概念

在C語言中定義的任意變量,在內存中都占用一定的存儲單元。存儲單元的每個字節都對應一個編號(就好比酒店中設有很多間客房,每間客房都有對應的房牌號),此編號就是變量在內存中的存儲地址。指針就是用來表示這些地址的變量。簡單地說,指針就是地址。例如:int x;int *point;point=&x;;表示point為指針變量,存放變量x的地址;x就是指針變量point所指向的變量。假設x的地址為2016,則point所存儲的地址即為2016。很多學生最初都存在這樣的疑問:若2016是變量x的地址,那么要表示指針point存放變量x的地址是否可以這樣賦值:point=2016。這是錯誤的,這個賦值語句中的2016表示是一個整型數據,不能表示地址。對于指針變量的賦值只能用取地址運算符"&"進行賦值,即:point=&x;;&x;表示變量x的地址。初學者還需注意:指針必須先賦值后使用,指針指向的變量類型必須和指針類型一致。

2 區分定義指針變量的*和指針運算符*

定義指針變量語句中的*是對指針變量的說明,如int *point表示定義point是一個指向int類型的指針變量。

指針運算符*是一個單目運算符,必須和指針變量結合表示間接訪問該指針指向的對象。如int x=50,*point=&x;;*point=60;第1個*表示定義point是一個指向x的指針變量,第2個*和指針共同組成表達式*point表示間接訪問x,相當于給x重新賦值為60。

3 指針與數組

一個數組由若干個元素組成,每個元素都對應一個地址,C語言中定義數組的指針,是指向整個數組的起始地址,和數組名表示的地址相同。數組元素的指針是數組元素的地址。例如:char s[10];char *p;這里的數組名s就是數組的首地址,若賦值p=s,則p為指向數組s的指針,表示整個數組的首地址,s+3表示距離s后3個位置所在單元的地址。s[3]表示數組中第4個元素的值,即距離s后3個位置所在單元中的值,因此s[3]與*(s+3)等價。由于p也表示數組的首地址,p+3與s+3等價,因此p[3]與*(p+3)、s[3]、*(s+3)等價。需要注意的是,p是允許移動的,如p=p+2,表示p發生改變,變為指向元素s[2]的地址,此時p[3]、*(p+3)不再表示s[3]的值,而是與s[5]等價。而此例中的s只能表示數組的首地址,不能出現這樣的賦值:s=s+2。

4 指針與函數

在指針與函數的關系中,有函數指針、指針函數、指針作為函數參數的三種常用形式。

(1)函數指針

函數指針是指向函數起始地址的指針,定義格式是:類型名 (*指針變量名)( );由于函數是一個整體,函數指針不能做自增、自減運算。

(2)指針函數

指針函數是表示指針的函數,其本質是一個函數,返回值是某一類型的指針,定義格式是:類型名 *函數名(參數列表);由于返回值是地址,因此類型一般都定義為int。

(3)指針作為函數的參數

函數的參數可以為字符型、整型、浮點型等數據,也可以是指針類型,它的作用是將變量的地址傳遞到另一個函數中。

例如,有兩個整型變量,m的值為55,n的值為66,若要交換m、n的值,使得m的值為66,n的值為55。首先我們以傳值的方式構建函數:

Void func_val(int x,int y)

{

t=x;

x=y;

y=t;

}

在調用函數func_val(m,n)后,發現m、n的值并沒有被交換。因為函數調用時,將實參的值傳遞給形參,函數最終交換的值是形參x、y的值,并不是實參m、n的值。

要想使函數對兩個實參進行交換,必須使實參與賦值后的形參變量所處的地址是相同的。可以以指針的形式作為形參重新構建函數:

Void func_addr(int *p,int *q)

{

t=*p;

*p=*q;

*q=t;

}

在調用函數時,必須將m、n地址傳遞給以指針形式表示的形參p、q,調用表達式應為func_addr(&m;,&n;),調用之后實參m、n的值被交換了。通過此例可以看出,指針作為形參可以改變實參的值,使函數構建的功能更加模塊化。在C語言程序設計過程中,指針可能是實現某些算法的唯一方法。

5 結束語

C語言程序設計是國內外大學計算機課程中重要的課程之一,指針是該課程中非常重要的部分,也是難點之一。在理論學習了指針的各知識點后,還應鼓勵學生在課后要多思考、多編程、多實踐。

參考文獻:

[1]楊智明.C語言指針使用分析[J].保山學院學報,2012.

主站蜘蛛池模板: 国产自在线播放| 国产亚洲视频免费播放| 久久精品国产国语对白| 网久久综合| 91极品美女高潮叫床在线观看| 99久久成人国产精品免费| 99视频在线观看免费| 国产不卡国语在线| 成人欧美日韩| 无码专区第一页| 欧美色图第一页| 国产精品短篇二区| 国产第一页亚洲| 久久天天躁狠狠躁夜夜2020一| 亚洲av日韩av制服丝袜| 国产精品尹人在线观看| 国产97视频在线| 午夜免费视频网站| 呦视频在线一区二区三区| 91小视频版在线观看www| 色婷婷在线播放| h网址在线观看| 91福利一区二区三区| 97国产在线播放| 伊人无码视屏| 在线观看精品国产入口| 日韩AV手机在线观看蜜芽| 亚洲成a人片| 国产靠逼视频| 在线看片中文字幕| 久久国产毛片| 国产福利免费在线观看| 亚洲无码A视频在线| 日韩精品欧美国产在线| 欧美特黄一免在线观看| 国产理论精品| 亚洲三级a| 亚洲欧洲美色一区二区三区| 97在线公开视频| 人人爽人人爽人人片| 亚洲av无码久久无遮挡| 粗大猛烈进出高潮视频无码| 欧美专区在线观看| 欧美成a人片在线观看| 视频一本大道香蕉久在线播放| 成人精品视频一区二区在线| 亚洲AⅤ永久无码精品毛片| 日本午夜影院| 777午夜精品电影免费看| 亚洲最黄视频| 国产成人超碰无码| 91亚洲免费| 一级成人欧美一区在线观看| 婷婷亚洲最大| 久久免费精品琪琪| 在线欧美a| 久久黄色小视频| 日本草草视频在线观看| 美女内射视频WWW网站午夜| 久久 午夜福利 张柏芝| 国产成人h在线观看网站站| 久久久久国色AV免费观看性色| 日韩欧美中文在线| 亚洲综合网在线观看| 任我操在线视频| 欧美亚洲第一页| 国产成人8x视频一区二区| 中文字幕久久亚洲一区| 性色生活片在线观看| 天堂久久久久久中文字幕| a亚洲视频| 欧美色99| 高潮爽到爆的喷水女主播视频| 无码一区二区三区视频在线播放| 蜜桃视频一区| 在线观看网站国产| 国产在线98福利播放视频免费| 永久免费av网站可以直接看的 | 99视频在线观看免费| 欧美三級片黃色三級片黃色1| 国产成人亚洲综合a∨婷婷| 97在线碰|