(中職)編程語言基礎(chǔ)-C++模塊6教學(xué)課件_第1頁
(中職)編程語言基礎(chǔ)-C++模塊6教學(xué)課件_第2頁
(中職)編程語言基礎(chǔ)-C++模塊6教學(xué)課件_第3頁
(中職)編程語言基礎(chǔ)-C++模塊6教學(xué)課件_第4頁
(中職)編程語言基礎(chǔ)-C++模塊6教學(xué)課件_第5頁
已閱讀5頁,還剩62頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、YCF正版可修改PPT(中職)編程語言基礎(chǔ)-C+模塊6教學(xué)課件模塊6 指針任務(wù)1指針概述任務(wù)2指針類型任務(wù)3指針的運算任務(wù)4指針與數(shù)組任務(wù)5指針與字符串任務(wù)6指針與函數(shù)任務(wù)7const指針返回任務(wù)1指針概述指針是C+語言具有代表性特征的功能之一。C+語言程序設(shè)計中指針的概念是不可缺少的主要內(nèi)容。利用指針可以直接對內(nèi)存中各種不同數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)進行快速的處理,并且它為函數(shù)間各類數(shù)據(jù)的傳遞提供了簡捷便利的方法。指針是與計算機系統(tǒng)內(nèi)部密切相關(guān)的一種處理形式。因此,正確熟練地使用指針可以編制出簡潔明快、性能強、質(zhì)量高的程序。但是指針的不當(dāng)使用也將產(chǎn)生程序失控的嚴(yán)重錯誤。因此,充分理解和全面掌握指針的概念

2、和使用特點,是學(xué)習(xí)C+程序設(shè)計的重點內(nèi)容之一。本任務(wù)將全面講述指針的概念以及它在數(shù)據(jù)處理中的使用特點。下一頁返回任務(wù)1指針概述內(nèi)存中任何一個可標(biāo)識的存儲區(qū)域(如簡單變量、數(shù)組、函數(shù)等實體)都有一個地址,這個地址就是該存儲區(qū)域的首地址。在計算機中,按照內(nèi)存的地址就可以訪問該存儲區(qū)域里的內(nèi)容,即按地址來讀寫該存儲區(qū)域里的數(shù)據(jù)。 C+是一種具有低級語言功能的高級語言,它的一個重要的特點就是允許在程序中引用一個變量的地址。在C+中,指針是用于定位其他程序?qū)嶓w的一種數(shù)據(jù)類型,它包含了所指對象的地址,所以,變量的地址就是變量的指針。上一頁下一頁返回任務(wù)1指針概述 地址也是一個值,也可以存放在變量中,存放地

3、址的變量稱為指針變量。一個指針變量里面所存放的內(nèi)容一定是另一個變量在內(nèi)存中的地址。擁有這個地址的變量稱為該指針變量所指向的變量。如果一個指針不指向任何數(shù)據(jù),則稱為空指針,其地址值就是0。指針也有類型,它就是指針?biāo)赶虻臄?shù)據(jù)的類型,因此“double型指針”是指專用于指向double型數(shù)據(jù)的指針。“指針”表達(dá)了兩層含義:一個地址以及存儲于該地址處的數(shù)據(jù)的類型,因此在概念上與“地址”還是有區(qū)別的。)上一頁返回任務(wù)2 指針類型 指針是一個變量,因此指針也有相關(guān)的類型。但是和普通變量不同的是,不同數(shù)據(jù)類型的指針之間的區(qū)別不是在指針的表示上,也不在指針?biāo)钟械闹瞪?,指針的類型指的是指針?biāo)赶虻臄?shù)據(jù)的類型

4、,所以指針的類型必須和所指向的變量的類型相匹配。6. 2. 1指針常量 空指針的地址值0可以用符號常量NULL表示。NULL(或o是c+中經(jīng)常用到的指針常量。6. 2. 2 指針變量下一頁返回任務(wù)2 指針類型6. 2. 2 指針變量 1.什么是指針變量 指針變量就是存放地址的變量,指針變量的類型就是存放于其中的指針(地址)所指向的數(shù)據(jù)的類型。定義指針變量采用格式: 類型修飾符*變量名=指針表達(dá)式上一頁下一頁返回任務(wù)2 指針類型其中第一個語句定義廠兩個類型相同(都是整型)的指針變量;第二個語句定義廠一個雙精度的簡單變量d和兩個雙精度指針變量x1和x2,而且這兩個變量均被初始化為指向d;最后一個語

5、句定義一個字符型指針變量s,并被初始化為指向一個字符串常量的首部。指針變量可以和其他類型變量在一個語句中定義。注意:指針定義時指定的數(shù)據(jù)類型不是指針變量本身的數(shù)據(jù)類型。因為指針變量保持的內(nèi)容總是地址量。機器硬件不同,地址量的數(shù)據(jù)長度不同。因此,指針本身的數(shù)據(jù)長度是由編譯系統(tǒng)決定的,它與機器的地址字長相適應(yīng)。指針定義時指定的數(shù)據(jù)類型,是指針用于保存的地址值中存儲的變量的數(shù)據(jù)類型,即指針?biāo)赶蜃兞康臄?shù)據(jù)類型。上一頁下一頁返回任務(wù)2 指針類型可以采用void作為類型修飾符,從而定義一個不與任何具體類型相聯(lián)系的指針。這樣的指針稱為void指針或無類型指針,可用來指向任何類型的數(shù)據(jù)。其他類型的指針可以賦

6、值給void指針,但反過來卻不行,例如:注意:NULL是一個指針常量,表示指針不指向任何地址,該值可賦給任何指針變量。常用來給指針初始化。而*void是一種指針類型,是空指針類型。上一頁下一頁返回任務(wù)2 指針類型2.指針變量的間接引用 一個實體可以直接用其標(biāo)識符表示,也可以用指向它的指針表示。用指針表示它所指向的實體,稱為指針的間接引用。如下面的一段程序:語句*pf1 = 3. 1415926;中的*pf1 是指pf1所指向的變量f1。上述引用的是*pf1,并不是直接引用f1。這稱為變量f1的間接引用。記號*稱為間接引用運算符。它與取地址運算符具有相同的優(yōu)先級別與結(jié)合性,并互為逆運算。上一頁下

7、一頁返回任務(wù)2 指針類型應(yīng)當(dāng)注意,聲明語句 float*pf=&f1;中的*與賦值語句 *pf=3. 1415926中的*的意義大不相同。前者是個指針運算符,它與float結(jié)合為“指向float的指針”類型。后者是間接引用運算符。二者不可混淆 對于語句float f;float*pf=&f上一頁下一頁返回任務(wù)2 指針類型上一頁返回任務(wù)3指針的運算 指針是一種數(shù)據(jù)類型,應(yīng)具有無符號整數(shù)的值。由于地址本身的特征,也給指針的運算帶來一些限制,它只能進行與整數(shù)相加、減運算;同一數(shù)組中各元素地址間的關(guān)系運算與相減運算;賦值運算。 其它的運算,如兩個指針相加、相乘、相除、移位以及指針與實數(shù)相加等都是不允許

8、的。6. 3. 1指針與整數(shù)相加、減 指針與整數(shù)相加、減,表示指針在內(nèi)存空間向下、上移動,移動以其類型長度為單位。int型指針的移動單位是2字節(jié),即int型指針加1,向下移動2字節(jié),減1向上移動2字節(jié)。float型指針的移動單位是4字節(jié)。圖6-1為指針與整數(shù)相加減時指針移動示意圖。下一頁返回任務(wù)3指針的運算6.3.2指向同一數(shù)組中的元素的指針的關(guān)系運算與相減運算指向同一數(shù)組中的元素的指針的關(guān)系運算,是比較它們之間的地址大小。兩個指針相等,表明它們指向同一數(shù)組元素。 兩個指向同一數(shù)組中的元素的指針相減,是計算它們之間的元素數(shù)日。6.3.3 指針賦值指針可以通過賦值運算改變其所指向的實體。指針的賦

9、值運算有以下三種情形。上一頁下一頁返回任務(wù)3指針的運算(1)給指針賦一個對應(yīng)類型的變量地址。如:執(zhí)行情況如圖6-2所示。每一次賦值都會改變指針pf的指向。(2)同類型指針間的賦值。如上一頁下一頁返回任務(wù)3指針的運算 執(zhí)行情況如圖6-3示。用一個指針給另一個同類型指針賦值,會使兩個指針指向同一變量 (3)指針增1,減1,即指針向下或向上移動一個所指向的數(shù)據(jù)類型空間。增1,減1運算符與*優(yōu)先級別相同,它們在同一個表達(dá)式中時,應(yīng)按結(jié)合性決定運算順序.如它們的執(zhí)行示意情況如圖6-4.上一頁返回任務(wù)4指針與數(shù)組 在C+中,指針和數(shù)組的關(guān)系十分密切。數(shù)組是由多個數(shù)組元素構(gòu)成,整個數(shù)組占用存儲器中一塊連續(xù)的

10、存儲器空間,每個數(shù)組元素都要占用存儲單元,它們都有相應(yīng)的地址。數(shù)組占用存儲空間的的大小等于所有數(shù)組元素的個數(shù)乘以數(shù)組元素類型的長度。通過數(shù)組元素地址,可以訪問數(shù)組元素。6. 4.1 數(shù)組的指針 數(shù)組名就是指針,且數(shù)組名還是指針常量,這就意味著其值不能改變。對于一維數(shù)組來說,數(shù)組名是指向數(shù)組第一個元素的指針,即指向數(shù)組的首地址,若數(shù)組名加1,則是指向數(shù)組第二個元素的指針,依次類推。下一頁返回任務(wù)4指針與數(shù)組 例6-1中定義廠名為a的數(shù)組,數(shù)組名a是指向a0元素的指針,*a表示a0元素的值。a+1是指向a1元素的指針,*(a+1)表示a1元素的值。a+2是指向a2元素的指針,*(a+2)表示a2元

11、素的值。通過數(shù)組指針也可以訪問數(shù)組元素。上一頁下一頁返回任務(wù)4指針與數(shù)組程序輸出結(jié)果:112233上一頁下一頁返回任務(wù)4指針與數(shù)組6. 4. 2 數(shù)組元素的指針形式上一頁下一頁返回任務(wù)4指針與數(shù)組上一頁下一頁返回任務(wù)4指針與數(shù)組這些對應(yīng)關(guān)系使我們有可能用數(shù)組名指針來引用數(shù)組的元素,稱為數(shù)組元素的指針形式上一頁下一頁返回任務(wù)4指針與數(shù)組上一頁下一頁返回任務(wù)4指針與數(shù)組通常把二維數(shù)組的數(shù)組名稱為該數(shù)組的行指針,把其下一級指針稱為列指針。例6-2是一個使用列指針的例子。下面是一個使用行指針的例子。上一頁下一頁返回任務(wù)4指針與數(shù)組上一頁下一頁返回任務(wù)4指針與數(shù)組6. 4. 3 數(shù)組的指針變量在C+中也

12、可以定義一個指針變量,用來存放數(shù)組的地址。這樣就使指針變量與數(shù)組建立起廠聯(lián)系,以便通過指針變量來訪問數(shù)組的元素。上一頁下一頁返回任務(wù)4指針與數(shù)組上一頁下一頁返回任務(wù)4指針與數(shù)組程序中通過語句p=a;使指針變量p與數(shù)組a建立聯(lián)系,即p是存放a數(shù)組指針的指針變量.6. 4. 4 指向數(shù)組的指針變量數(shù)組名指針是指針常量,使用起來還不夠靈活。具有更大的靈活性的是指向數(shù)組的指針變量。它與數(shù)組名指針不同之處在于,它可以通過賦值指向類型相同的其它數(shù)組,而數(shù)組名只能固定地指向某一數(shù)組。 一維數(shù)組的指針是直接指向第0個元素數(shù)據(jù)的。圖4-5為指向一維數(shù)組的指針與數(shù)組名指針以及下標(biāo)變量間的對應(yīng)關(guān)系示意圖。上一頁下一

13、頁返回任務(wù)4指針與數(shù)組上一頁下一頁返回任務(wù)4指針與數(shù)組運行結(jié)果1,2,3,4,5,對于多維數(shù)組來說,第一維不必指出,但必須指出從第二維開始的各維的大小。如對如下數(shù)組:int b35;int c358;指向它們的指針變量的聲明語句應(yīng)為int(*pb)5;int(*pc)58;參照例6-3可以得到下面的例子上一頁下一頁返回任務(wù)4指針與數(shù)組上一頁下一頁返回任務(wù)4指針與數(shù)組上一頁下一頁返回任務(wù)4指針與數(shù)組運行結(jié)果: 11,12,13,14,15,21,22,23,24,25,31,32,33,34,35, 程序中,使用廠表達(dá)式pb +;這說明廠指向數(shù)組的指針變量是一個可修改的左值,而數(shù)組名指針是個常量

14、。 * (pb+i)也可以寫成pbi的形式,即pbi與bi相當(dāng),并且pbij與bi j相當(dāng)。請看下例上一頁下一頁返回任務(wù)4指針與數(shù)組上一頁下一頁返回任務(wù)4指針與數(shù)組上一頁下一頁返回任務(wù)4指針與數(shù)組運行結(jié)果:11,12,13,14,1521,22,23 ,24,25,31,32,33 ,34 ,35上一頁返回任務(wù)5指針與字符串6. 5.1字符串的處理方式 在C+中,并沒有設(shè)置專門的字符串類型,而是通過字符數(shù)組處理字符串,對于一個存儲字符串的數(shù)組,其數(shù)組名就是指向其字符串的指針,因為它的值就是字符串中每一個字符在存儲器中的地址。在C+中,指向一個字符串中任意一個字符位置的指針都是一個指向字符串的指

15、針,只不過這個字符串是從所指示的位置開始,到末尾空字符為止,是整個字符串的一個子串.例如,若先定義一個字符類型的數(shù)組,并將一字符串存儲在數(shù)組中,其形式如下:下一頁返回任務(wù)5指針與字符串 第一個語句是說明建立廠一個具有30個元素的數(shù)組strl,并將字符串 This is a book. 存人其中。在定義第二個str2數(shù)組時,沒有給出數(shù)組的大小,系統(tǒng)會根據(jù)后面字符串的長短自動定義數(shù)組的大小。上面的兩個數(shù)組不僅將一些字符存人數(shù)組,而且還在數(shù)組的最后加上廠一個“0”作為字符串的結(jié)束標(biāo)志。也就是說,雖然第一個數(shù)組的長度是30,但給定的字符串只占用16個字節(jié),其中前115個字節(jié)存放字符,第16個字節(jié)存放“

16、0,這是字符串的結(jié)束標(biāo)志。 在定義str2數(shù)組時沒有給出數(shù)組長度,系統(tǒng)根據(jù)給出的字符串 hello”為數(shù)組分配6個字節(jié),其中前5個字節(jié)存放字符,最后的字節(jié)存放的是“0 上一頁下一頁返回任務(wù)5指針與字符串6.5.2 字符數(shù)組的指針變量 可以定義一個指針變量,存放字符數(shù)組的地址,即定義指向字符數(shù)組的指針變量。通過指向字符數(shù)組的指針變量可以訪問數(shù)組的元素。例6-8中定義pc為指向字符數(shù)組的指針變量上一頁下一頁返回任務(wù)5指針與字符串上一頁下一頁返回任務(wù)5指針與字符串6.5.3 指向字符串的指針變量在C +程序中,可以用兩種方法來實現(xiàn)字符串的保存(1)用字符數(shù)組來實現(xiàn)(2)用字符串指針實現(xiàn)。上一頁下一頁

17、返回任務(wù)5指針與字符串1.字符串指針作函數(shù)參數(shù)一般來講,對于字符數(shù)組作為函數(shù)的參數(shù)可以采用以下4種方法。實參形參數(shù)組名數(shù)組名數(shù)組名字符指針變量字符指針變量字符指針變量字符指針變量數(shù)組名上一頁下一頁返回任務(wù)5指針與字符串上一頁下一頁返回任務(wù)5指針與字符串上一頁下一頁返回任務(wù)5指針與字符串上一頁下一頁返回任務(wù)5指針與字符串另外,如將例6 -9中的實參改為字符指針變量,形參也為字符指針變量,改寫后的形式如下上一頁下一頁返回任務(wù)5指針與字符串上一頁下一頁返回任務(wù)5指針與字符串如將例6 -9中的實參改為字符指針變量,形參為數(shù)組名,改寫后的形式如下:上一頁下一頁返回任務(wù)5指針與字符串對例6 -9的參數(shù)作以

18、上三種修改,執(zhí)行程序后,運行結(jié)果仍與例6 -9相同。上一頁返回任務(wù)6指針與函數(shù)6. 6.1 函數(shù)的指針 在C+中,指針變量可以指向普通變量、字符串和數(shù)組等,同時也可以指向函數(shù),因為一個函數(shù)在編譯時被分配一個人口地址,這個人口地址即為該函數(shù)的指針。所以,可以用指針變量指向函數(shù),然后通過該指針變量調(diào)用此函數(shù)。 在C+中,函數(shù)的名稱就代表廠該函數(shù)的指針指向函數(shù)的指針變量的一般定義形式為:數(shù)據(jù)類型標(biāo)識符(*指針變量名)();下一頁返回任務(wù)6指針與函數(shù)上一頁下一頁返回任務(wù)6指針與函數(shù)上一頁下一頁返回任務(wù)6指針與函數(shù)上一頁下一頁返回任務(wù)6指針與函數(shù)說明以下幾點(1) int(* p)();說明了一個指向返

19、回值為整型數(shù)據(jù)的函數(shù)的指針,不要寫成int*p().(2)p=max;表示把函數(shù)的人口地址賦給指針變量p。那么,?p就是函數(shù)max,因此,c=(* P)( a, b);和c =max(a,b);是等價的 注意以下兒點內(nèi)容。 (1)函數(shù)的調(diào)用可以通過函數(shù)名調(diào)用,也可通過函數(shù)指針調(diào)用。 (2) int( *p) ( );只是表示定義了一個指向函數(shù)的指針變量,而不是固定指向哪一個函數(shù),在程序中把哪個函數(shù)的地址賦給它,它就指向哪個函數(shù)。 (3)在函數(shù)指針變量賦值時,只需給出函數(shù)名,而不必給出參數(shù),如:p= max;因為它只是傳遞函數(shù)的地址。上一頁下一頁返回任務(wù)6指針與函數(shù)(4)對指向函數(shù)的指針作像p+n,p+ ,p- -等算數(shù)運算是無意義的6. 6. 2把指向函數(shù)的指針變量作為函數(shù)參數(shù)函數(shù)的指針變量用途之一就是把指針作為參數(shù)傳遞到其他函數(shù)。以前講過,函數(shù)的參數(shù)可以為變量、數(shù)組名、指向變量的指針變量以及指向數(shù)組的指針變量等,而現(xiàn)在指向函數(shù)的指針變量也可以作為函數(shù)參數(shù),以實現(xiàn)函數(shù)地址的傳遞。如:上一頁下一頁返回任務(wù)6指針與函數(shù)6. 6. 3 返回指針值的函數(shù)返回指針值的函數(shù)的定義形式為:類型標(biāo)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論