亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C語言指針初探

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

        姜雪茸

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

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

        1 指針

        理解指針首先要了解內(nèi)存,掌握內(nèi)存單元、內(nèi)存單元的地址、內(nèi)存單元的內(nèi)容的基本概念。內(nèi)存是由許多個大小完全一致的存儲單元構(gòu)成。每一個存儲單元容量為一個字節(jié)。為將各存儲單元區(qū)別開,給每個存儲單元一個對應(yīng)的編號稱為存儲單元的地址。而存儲單元中存儲的數(shù)據(jù)稱為存儲單元的內(nèi)容。

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

        2 指針變量

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

        3 指針與數(shù)組

        3.1 指針和一維數(shù)組

        數(shù)組是同類型數(shù)據(jù)的有序集合。數(shù)組中的元素依次順序的存儲在一片連續(xù)的內(nèi)存區(qū)域中,對數(shù)組的操作依靠數(shù)組元素的下標(biāo)實現(xiàn),而數(shù)組下標(biāo)代表的是數(shù)組元素所在地址,地址即指針。所以用指針不但可以實現(xiàn)數(shù)組的操作,而且占用內(nèi)存少,運行速度快。

        3.2 指針和二維數(shù)組

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

        4 指針與函數(shù)

        4.1 函數(shù)指針

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

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

        函數(shù)指針本質(zhì)是一個指針。

        4.2 指針函數(shù)

        指針函數(shù)本質(zhì)是一個函數(shù)。

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

        5 指針數(shù)組與指向指針的指針

        5.1 指針數(shù)組

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

        5.2 指向指針的指針

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

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

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

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

        [參考文獻]

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

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

        国产人澡人澡澡澡人碰视频| 国内自拍色第一页第二页| 日本a片大尺度高潮无码| 国产国语熟妇视频在线观看 | 一本久久综合亚洲鲁鲁五月天| 伊人久久五月丁香综合中文亚洲| 任我爽精品视频在线播放| 国产亚洲av无码专区a∨麻豆| 久久精品国产99久久丝袜| 日韩女同一区在线观看| 熟妇人妻精品一区二区视频| 国产精品二区一区二区aⅴ污介绍| a级毛片在线观看| 一区二区三区福利在线视频| 被驯服人妻中文字幕日本| 亚洲精品一区三区三区在线 | 熟女免费观看一区二区| 国产亚洲精品美女久久久m | 狠狠躁日日躁夜夜躁2020| 好男人视频在线视频| 久久精品视频中文字幕无码| 久久久精品人妻一区二区三区游戏 | 亚洲一区二区岛国高清| 国产成人综合美国十次| 日韩av无码成人无码免费| 国产一区二区三区最新视频| 中文字幕亚洲综合久久综合| 一夲道无码人妻精品一区二区 | 一国产区在线观看| 亚洲中文字幕第一第二页| 亚洲av无码一区二区三区天堂| 98久9在线 | 免费| 国产人禽杂交18禁网站| 国产精品一区av在线| 野花社区视频在线观看| 欧美日韩区1区2区3区| 扒开女性毛茸茸的视频| 精品国产青草久久久久福利| 91精品福利观看| 特级毛片全部免费播放a一级| 亚洲视频专区一区二区三区|