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

C語言指針初探

2013-04-29 06:02:15姜雪茸
無線互聯科技 2013年6期

姜雪茸

摘 要:本文從指針的基本概念出發,分別闡述了指針、指針變量、指針與數組、指針與函數等幾個方面的基本概念。

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

1 指針

理解指針首先要了解內存,掌握內存單元、內存單元的地址、內存單元的內容的基本概念。內存是由許多個大小完全一致的存儲單元構成。每一個存儲單元容量為一個字節。為將各存儲單元區別開,給每個存儲單元一個對應的編號稱為存儲單元的地址。而存儲單元中存儲的數據稱為存儲單元的內容。

在計算機中,所有數據都被放在內存中。如果在程序中定義了一個變量,則程序在編譯過程中由系統給變量分配適當內存單元。因此,在程序中使用的變量就是內存中某個存儲單元。例如,程序中定義某字符型變量i=A,編譯時為其分配地址為2000的一個存儲單元。則變量i被存放在地址編號為2000的單元中,此單元中存放的內容是A。地址指示出變量所在位置,即按變量地址尋找變量的值,變量的地址就稱為變量的指針。通常用&表示取變量的存儲地址,&i=2000。

2 指針變量

如果將變量i所在單元的地址2000作為數據存放在其他存儲單元中(假設當前分配其他單元地址為3000),則變量i被存放在以地址編號為3000的存儲單元的內容2000為地址的單元中。即就是存儲單元3000中存放的是變量i的地址(或指針),則將存儲單元3000定義為變量稱為指針變量,專門用來存放變量存儲地址的變量稱為指針變量。通常用*表示變量的類型為指針型變量。

3 指針與數組

3.1 指針和一維數組

數組是同類型數據的有序集合。數組中的元素依次順序的存儲在一片連續的內存區域中,對數組的操作依靠數組元素的下標實現,而數組下標代表的是數組元素所在地址,地址即指針。所以用指針不但可以實現數組的操作,而且占用內存少,運行速度快。

3.2 指針和二維數組

二維數組由若干個一維數組組成。C語言將二維數組實際上定義為一個一維數組,而這個一維數組的每一個成員又是一個一維數組。假設定義int *p,a[3][4],i,j;則a數組由a[0]、a[1]、a[2]三個元素組成,而a[0]、a[1]、a[2]每個元素又分別是由4個整型元素組成的一維數組。a[0]、a[1]、a[2]依次代表二維數組每行第一個元素的地址,二維數組元素的地址可以由表達式&a[i][j]求得,或通過每行的首地址來表示。如:地址&a[0][0]可以用a[0]+0來表示,地址&a[0][1]可以用a[0]+1表示;則a[i][j]的地址可用五種方式表示:(1)&a[i][j](2)a[i]+j(3)*(a+i)+j(4)&a[0][0]+4*i+j (5)a[0]+ 4*i+j。由以上通過地址來引用二維數組元素a[i][j]對應有五種方式表達:(1)a[i][j](2)*(a[i]+j)(3)*(*(a+i)+j)(4)(*(a+i))[j](5)*(&a[0][0]+4*i+j)。

4 指針與函數

4.1 函數指針

指針可以指向整型變量、字符串、數組、也可以指向一個函數。一個函數在編譯是被分配給一個入口地址。這個函數的入口地址就稱為函數的指針。即用一個指針變量指向函數,然后通過該指針變量調用此函數。例如:int(*p)(int,int);表示定義了一個指向函數的指針變量p,p用來存放函數入口地址。若當前有函數int proc(int,int);則p=proc是將函數proc的入口地址賦給p,而用函數指針變量調用函數時,將(*p)代替函數名,可以表示為c=(*p)(a,b),其中a,b為實參。

函數指針變量通常是用于把指針作為參數傳遞到其他函數。函數的參數可以是多種類型的變量,指向函數的指針也可以作為參數實現函數地址的傳遞,從而實現在被調用的函數中使用實參函數。例如:某程序中函數聲明為void subproc(int,int,int(*subfun)(int,int));函數調用為subproc(s,t,suba);subproc(s,t,subb);subproc(s,t,subc);其中int(*subfun)(int,int)表示subfun是指向函數的指針,它在程序中多次被調用,將函數suba,subb,subc作為實參分別傳遞給形參subfun。也就是將函數指針分別指向suba,subb,subc三個子函數。實現了函數的多次調用,而無需定義多個實參,增加了程序的靈活性,簡化了程序。

函數指針本質是一個指針。

4.2 指針函數

指針函數本質是一個函數。

一個函數可以返回一個整型值、字符值、實型值等,也可以返回指針型的數據,即地址。例如:int *a(int x,int y);其中函數名和參數為a(int x,int y),在函數名前加上*表示此函數為指針型函數。最前面的int表示返回的指針指向整型變量。

5 指針數組與指向指針的指針

5.1 指針數組

一個數組,若其元素均為指針類型數據,稱為指針數組。指針數組中的每一個元素均為指針。指針數組可以作為函數的參量使用,也常用于指向若干字符串,這樣使字符串處理更加靈活方便。

5.2 指向指針的指針

一個指針變量指向其他指針類型變量,稱為指向指針的指針。

例如:int i,*p1,**p2;p1=&i;p2=&p1;*p1=i;*p2=p1;則p2=&(&i);**p2=i;

一個指針變量的地址就是指向該變量的指針,也稱為雙重指針。例如:int **a [n]

這是一個int型指針的指針數組。a首先和[ ]結合,即a[n],表示a是一個數組,然后a[n]和其緊鄰的*結合,即*a[n],表示數組a的每個元素均為指針。*a[n]再和前一個*結合(*的結合順序為從右到左),即*(*a[n]),表示數組a的每個元素為指針,且該指針指向int型的指針,也就是說,數組a的每個元素為int型的指針的指針。

[參考文獻]

[1]譚浩強.C語言程序設計(第三版)[M].清華大學出版社,2005.

[2]衛武波,陳冬.C語言指針解析[J].《軟件導刊》,2012(11).

主站蜘蛛池模板: 日韩欧美在线观看| 97久久人人超碰国产精品| 久996视频精品免费观看| 国内精品一区二区在线观看| 亚洲一级毛片| 中文字幕亚洲综久久2021| 国产乱人视频免费观看| 国产成人综合在线观看| 日日拍夜夜嗷嗷叫国产| 国产高清不卡| 在线观看无码av免费不卡网站| 精品无码国产自产野外拍在线| 福利视频久久| 中文字幕va| 国产一区二区精品福利| 天天综合网色| 91福利一区二区三区| 国产精品亚洲专区一区| 亚洲日本中文综合在线| 久久99国产综合精品女同| 亚洲动漫h| 最新午夜男女福利片视频| 日韩高清无码免费| 超薄丝袜足j国产在线视频| 国产免费羞羞视频| 在线视频一区二区三区不卡| 欧美日韩综合网| 中文字幕免费播放| 狠狠色噜噜狠狠狠狠色综合久 | 人妻91无码色偷偷色噜噜噜| 91黄色在线观看| 色哟哟国产精品| 亚洲中文在线视频| 狂欢视频在线观看不卡| 免费AV在线播放观看18禁强制| 亚洲侵犯无码网址在线观看| 人人澡人人爽欧美一区| 欧美a在线| 天堂在线亚洲| 伦伦影院精品一区| 欧美午夜理伦三级在线观看| 亚洲无码37.| 亚洲另类国产欧美一区二区| 亚洲婷婷六月| 国产精品黄色片| 欧美性天天| 99re视频在线| 国产精品太粉嫩高中在线观看 | 人妻无码中文字幕一区二区三区| 精品人妻无码区在线视频| 成年av福利永久免费观看| 在线精品亚洲国产| 找国产毛片看| 成人一级免费视频| 都市激情亚洲综合久久| 成年人午夜免费视频| av天堂最新版在线| 国产精品久久久精品三级| 国产成人精品亚洲77美色| 91亚瑟视频| 99人妻碰碰碰久久久久禁片| 日韩精品免费在线视频| 制服丝袜国产精品| 午夜视频免费一区二区在线看| 中文字幕第1页在线播| av手机版在线播放| 午夜精品福利影院| 亚洲国产精品美女| 成年看免费观看视频拍拍| 永久免费AⅤ无码网站在线观看| 九九热视频精品在线| 特级毛片免费视频| 亚洲一区二区三区香蕉| 色天天综合| 成人小视频网| 欧美三级日韩三级| 国产人妖视频一区在线观看| 亚洲综合国产一区二区三区| 尤物精品视频一区二区三区| 国产一级一级毛片永久| 色综合激情网| 青青草国产在线视频|