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).

主站蜘蛛池模板: 无码综合天天久久综合网| 国产91九色在线播放| 亚洲毛片一级带毛片基地| 精品三级网站| 亚洲毛片一级带毛片基地| 午夜爽爽视频| 中文字幕免费在线视频| 亚洲欧洲一区二区三区| 日韩欧美在线观看| 一本大道无码高清| 成人伊人色一区二区三区| 亚洲无码电影| 亚洲小视频网站| 91丝袜乱伦| P尤物久久99国产综合精品| 久久免费观看视频| 女人毛片a级大学毛片免费| 台湾AV国片精品女同性| 亚洲人成高清| 99re经典视频在线| 久久精品无码一区二区国产区 | 国产精品网曝门免费视频| 伊人精品成人久久综合| 婷婷成人综合| 国产成人AV综合久久| 天天躁夜夜躁狠狠躁躁88| 美女国内精品自产拍在线播放 | 最新国产网站| 99视频精品在线观看| 欧美日韩成人在线观看| 亚洲国产一区在线观看| 伊人福利视频| 国产sm重味一区二区三区| 国产超碰在线观看| 91午夜福利在线观看精品| 波多野结衣中文字幕一区二区| 男女猛烈无遮挡午夜视频| 久久香蕉国产线看精品| 亚洲精品在线观看91| 青青极品在线| 亚洲天堂首页| 精品国产免费人成在线观看| 一本一本大道香蕉久在线播放| 人妻无码中文字幕一区二区三区| 亚洲国内精品自在自线官| 99热免费在线| 国产一区二区三区在线精品专区| 国产精品视频第一专区| 中文字幕资源站| 日韩性网站| 国产激爽大片高清在线观看| 91在线精品麻豆欧美在线| 国产日韩久久久久无码精品| 国产91精品最新在线播放| 免费女人18毛片a级毛片视频| 欧美精品另类| 亚洲精品va| 最新亚洲人成网站在线观看| 久久免费看片| 无码人中文字幕| 在线观看精品自拍视频| 国内精品久久九九国产精品 | 99在线视频网站| 欧美日韩专区| 114级毛片免费观看| 性激烈欧美三级在线播放| 在线色综合| 国产成人精品一区二区| 日韩一二三区视频精品| 国产噜噜噜视频在线观看 | 再看日本中文字幕在线观看| 欧美亚洲激情| 亚洲一区毛片| 日韩欧美国产中文| 91亚洲精选| 亚洲伊人天堂| 男女男免费视频网站国产| 国产精品亚洲片在线va| 欧美在线一级片| 国产综合日韩另类一区二区| 日本一区二区三区精品视频| 国产91成人|