C語(yǔ)言項(xiàng)目化教程六_第1頁(yè)
C語(yǔ)言項(xiàng)目化教程六_第2頁(yè)
C語(yǔ)言項(xiàng)目化教程六_第3頁(yè)
C語(yǔ)言項(xiàng)目化教程六_第4頁(yè)
C語(yǔ)言項(xiàng)目化教程六_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

二級(jí)指針

張競(jìng)丹深圳信息職業(yè)技術(shù)學(xué)院二級(jí)指針任意空間在內(nèi)存中都有地址,二級(jí)指針就是為了獲取用于存放指針的內(nèi)存空間的地址。指向指針的指針?lè)Q為二級(jí)指針,用于存放二級(jí)指針的變量稱(chēng)為二級(jí)指針變量。例如:inta,*pa,**p_pa;a=20;pa=&a;p_pa=&pa;20&a&paapap_pa謝謝您的聆聽(tīng)!Thankyou!指針引用字符串

張競(jìng)丹深圳信息職業(yè)技術(shù)學(xué)院指針引用字符串訪問(wèn)一個(gè)字符串的兩種方法:用字符數(shù)組存放一個(gè)字符串

charstr[]=''Test'';用字符指針指向一個(gè)字符串

char*str=''Test'';

等價(jià)于:char*str;str=''Test'';指針引用字符串注意:可以用指針指向字符串常量,但是不能通過(guò)指針變量對(duì)該字符串常量重新賦值,因?yàn)樽址A渴遣荒鼙桓淖兊?。通過(guò)字符數(shù)組名或字符指針變量可以輸出一個(gè)字符串,而對(duì)一個(gè)數(shù)值型數(shù)組,是不能用數(shù)組名輸出它的全部元素的。對(duì)字符串中字符的存取,可以用下標(biāo)法,也可以用指針?lè)?。謝謝您的聆聽(tīng)!Thankyou!指針與數(shù)組

張競(jìng)丹深圳信息職業(yè)技術(shù)學(xué)院23指向數(shù)組元素的指針用指針訪問(wèn)二維數(shù)組目錄1通過(guò)指針引用數(shù)組元素4用數(shù)組名作函數(shù)參數(shù)目錄23指向數(shù)組元素的指針1指向數(shù)組元素的指針用指針訪問(wèn)二維數(shù)組1通過(guò)指針引用數(shù)組元素4用數(shù)組名作函數(shù)參數(shù)指向數(shù)組元素的指針數(shù)組是內(nèi)存地址連續(xù)存放的數(shù)據(jù)集合,數(shù)組名就是這塊連續(xù)內(nèi)存單元的首地址,也就是數(shù)組中第一個(gè)元素的地址。對(duì)于數(shù)組元素的引用除了下標(biāo)法,還可以使用指針進(jìn)行訪問(wèn),也就是說(shuō)可以通過(guò)指向數(shù)組元素的指針找到所要訪問(wèn)的元素,這種方法通常被稱(chēng)為指針?lè)?。指向?shù)組元素的指針例如:聲明一個(gè)整型數(shù)組和一個(gè)整型指針inta[10];int*p;將數(shù)組a的首地址賦值給指針變量p,對(duì)指針變量p的賦值有兩種方法:方法1:p=a;方法2:p=&a[0];目錄23指向數(shù)組元素的指針2通過(guò)指針引用數(shù)組元素用指針訪問(wèn)二維數(shù)組1通過(guò)指針引用數(shù)組元素4用數(shù)組名作函數(shù)參數(shù)通過(guò)指針引用數(shù)組元素可以通過(guò)指針來(lái)訪問(wèn)數(shù)組元素。例如:*p=0;*(p+3)=3;注意:p+i的值即是a[i]的地址;*(p+i)是p+i所指向的數(shù)組元素,即a[i];當(dāng)完成上述的聲明和初始化賦值后,p和a便具有了等價(jià)互換的功能,因此也可以對(duì)指針變量使用下標(biāo)法引用數(shù)組元素。例如引用p+i所指向的元素,可表述為p[i]。需要特別強(qiáng)調(diào)的是使用指針?lè)ㄔL問(wèn)數(shù)組可使目標(biāo)程序質(zhì)量更高。通過(guò)指針引用數(shù)組元素例6-9輸入一個(gè)整型數(shù)組,使最大值元素與第一個(gè)元素交換,最小值元素與最后一個(gè)元素交換,最后輸出交換后的數(shù)組。編程分析:(1)數(shù)據(jù)結(jié)構(gòu)類(lèi)型題目要求形式語(yǔ)言(C)的表達(dá)輸入數(shù)據(jù)整型數(shù)組1個(gè)整型(int)數(shù)組:a[10]數(shù)據(jù)3個(gè)整型(int)指針變量:max←amin←ap←a臨時(shí)數(shù)據(jù)1個(gè)整型(int)變量:temp用于交換時(shí)候存放待交換變量的值通過(guò)指針引用數(shù)組元素例6-9輸入一個(gè)整型數(shù)組,使最大值元素與第一個(gè)元素交換,最小值元素與最后一個(gè)元素交換,最后輸出交換后的數(shù)組。編程分析:(2)算法算法流程形式語(yǔ)言的表達(dá)從鍵盤(pán)讀入數(shù)組a中各個(gè)元素的值for循環(huán)處理:

以函數(shù)scanf從鍵盤(pán)讀入數(shù)據(jù),并存放在數(shù)組a的對(duì)應(yīng)元素中遍歷數(shù)組尋找最大值元素和最小值元素for循環(huán):

以指針變量p遍歷數(shù)組max指向最大值元素min指向最小值元素交換最大值元素與第一個(gè)元素的值*max←a[0];a[0]←temp;temp←*max;換最小值元素與最后一個(gè)元素的值temp←*min;*min←a[9];a[9]←temp;輸出數(shù)組a的值,驗(yàn)證交換后的結(jié)果循環(huán)以函數(shù)printf輸出數(shù)組a中各個(gè)元素的值目錄23指向數(shù)組元素的指針3用指針訪問(wèn)二維數(shù)組用指針訪問(wèn)二維數(shù)組1通過(guò)指針引用數(shù)組元素4用數(shù)組名作函數(shù)參數(shù)用指針訪問(wèn)二維數(shù)組二維數(shù)組中的元素是按行存放的,可以把二維數(shù)組看作是特殊的一維數(shù)組,它的元素又是一個(gè)一維數(shù)組。目錄23指向數(shù)組元素的指針4用數(shù)組名作函數(shù)參數(shù)用指針訪問(wèn)二維數(shù)組1通過(guò)指針引用數(shù)組元素4用數(shù)組名作函數(shù)參數(shù)用數(shù)組名作函數(shù)參數(shù)數(shù)組名可以用作函數(shù)的實(shí)參和形參。由于數(shù)組名也是數(shù)組的首地址,所以數(shù)組名作函數(shù)的實(shí)參本質(zhì)上是傳遞地址給函數(shù)的形參,在函數(shù)內(nèi)修改形參所指向的對(duì)象實(shí)際上是修改了相應(yīng)的實(shí)參數(shù)組元素的值。例6-10輸入一個(gè)整型數(shù)組,使最大值元素與第一個(gè)元素交換,最小值元素與最后一個(gè)元素交換,最后輸出交換后的數(shù)組(以函數(shù)實(shí)現(xiàn))。編程分析:在例6-9分析的基礎(chǔ)上編寫(xiě)函數(shù)chang遍歷數(shù)組,以指針變量max指向數(shù)組a中最大值的元素、指針變量min指向最小值的元素。將數(shù)組中最大的元素與第一個(gè)元素交換,最小的與最后一個(gè)元素交換。謝謝您的聆聽(tīng)!Thankyou!指針變量

張競(jìng)丹深圳信息職業(yè)技術(shù)學(xué)院23指針變量的定義指針變量的引用目錄1指針變量的初始化指針變量的運(yùn)算指針變量作函數(shù)參數(shù)45目錄23指針變量的定義1指針變量的定義指針變量的引用1指針變量的初始化4指針變量的運(yùn)算5指針變量作函數(shù)參數(shù)指針變量的定義一個(gè)變量如果專(zhuān)門(mén)用來(lái)存放另一變量的地址(即指針),則它稱(chēng)為指針變量。指針變量既可以存放其它變量的地址,也可以通過(guò)指針變量間接讀寫(xiě)它所指向變量的值。定義指針變量的一般格式:類(lèi)型說(shuō)明符*指針變量名;其中類(lèi)型說(shuō)明符表示該指針變量所指向的變量的數(shù)據(jù)類(lèi)型,它包括C語(yǔ)言所支持的數(shù)據(jù)類(lèi)型;“*”號(hào)表示該變量是指針類(lèi)型;指針變量名遵循用戶(hù)標(biāo)識(shí)符命名規(guī)則。例如:int*a;/*表示指向整型變量的指針變量*/

float*b;/*表示指向?qū)嵭妥兞康闹羔樧兞?/目錄23指針變量的定義2指針變量的初始化指針變量的引用1指針變量的初始化4指針變量的運(yùn)算5指針變量作函數(shù)參數(shù)指針變量的初始化同普通的變量一樣,指針變量在使用前除了要進(jìn)行聲明定義還要進(jìn)行初始化。所不同的是它必須用地址進(jìn)行初始化。內(nèi)存單元的地址不可以隨意使用,為此C語(yǔ)言中可以通過(guò)地址運(yùn)算符“&”提取變量的地址實(shí)現(xiàn)對(duì)指針變量的初始化賦值。例如:inta,*p=&a;也可以通過(guò)下列語(yǔ)句對(duì)指針變量賦空值,即不指向任何地方。int*p=NULL;指針變量的初始化例6-1定義指針變量pa和pb分別指向整型變量a和b,輸出pa、pb與a、b的地址。編程分析:(1)數(shù)據(jù)結(jié)構(gòu)類(lèi)型題目要求形式語(yǔ)言(C)的表達(dá)定義數(shù)據(jù)整型變量a和b2個(gè)整型(int)變量:a,b定義數(shù)據(jù)指針變量pa和pb分別指向整型變量a和b2個(gè)整型(int)指針變量:pa,pbpa←&apb←&b指針變量的初始化例6-1定義指針變量pa和pb分別指向整型變量a和b,輸出pa、pb與a、b的地址。編程分析:(2)算法算法流程形式語(yǔ)言的表達(dá)輸出pa,pb,&a,&b以printf函數(shù)輸出pa,pb,&a,&b結(jié)果,指針變量輸出格式控制字符采用%p目錄23指針變量的定義3指針變量的引用指針變量的引用1指針變量的初始化4指針變量的運(yùn)算5指針變量作函數(shù)參數(shù)指針變量的引用由于指針變量的值是變量的地址,因此既可以通過(guò)引用指針直接訪問(wèn)數(shù)據(jù)的地址,也可以通過(guò)引用指針間接訪問(wèn)變量的內(nèi)容。(1)指針變量名指針變量存放指針?biāo)赶虻淖兞康牡刂?,例如:inta;int*p=&a;將變量a的地址賦值給指針變量p,使指針變量p存放變量a的地址。指針變量的引用由于指針變量的值是變量的地址,因此既可以通過(guò)引用指針直接訪問(wèn)數(shù)據(jù)的地址,也可以通過(guò)引用指針間接訪問(wèn)變量的內(nèi)容。(2)*指針變量名“*指針變量名”代表指針變量所指向的變量的值,例如:*p=3;將p所指向的內(nèi)存單元賦值為3,也就是將變量a賦值為3。。注意:不能對(duì)空指針做取值。3*p指針變量p&a變量a指針變量的引用存取變量的值有兩種方式:直接訪問(wèn):按照變量名存取變量例如:

inta;a=3;間接訪問(wèn):通過(guò)指向變量的指針存取變量,方式如下:

*指針變量名指針變量的引用例6-3定義兩個(gè)單精度實(shí)數(shù),并將它們的值進(jìn)行交換(要求以指針實(shí)現(xiàn))編程分析:(1)數(shù)據(jù)結(jié)構(gòu)類(lèi)型題目要求形式語(yǔ)言(C)的表達(dá)定義數(shù)據(jù)兩個(gè)單精度實(shí)型變量a和b2個(gè)實(shí)型(float)變量:a,b定義數(shù)據(jù)指針變量pa和pb分別指向?qū)嵭妥兞縜和b2個(gè)實(shí)型(float)指針變量:pa,pbpa←&apb←&b臨時(shí)數(shù)據(jù)1個(gè)實(shí)型(float)變量:temp用于交換時(shí)候存放待交換變量的值指針變量的引用例6-3定義兩個(gè)單精度實(shí)數(shù),并將它們的值進(jìn)行交換(要求以指針實(shí)現(xiàn))編程分析:(2)算法算法流程形式語(yǔ)言的表達(dá)通過(guò)指針交換變量a和b的數(shù)值交換過(guò)程如圖6-8輸出a和b的值,驗(yàn)證交換結(jié)果以printf函數(shù)輸出a和b交換后的值指針變量的引用例6-3定義兩個(gè)單精度實(shí)數(shù),并將它們的值進(jìn)行交換(要求以指針實(shí)現(xiàn))編程分析:(2)算法3temp533temp553temp35temp53b*pba*paa*paa*paa*pab*pbb*pbb*pb目錄23指針變量的定義4指針變量的運(yùn)算指針變量的引用1指針變量的初始化4指針變量的運(yùn)算5指針變量作函數(shù)參數(shù)指針變量的運(yùn)算與指針變量有關(guān)的運(yùn)算符有:&:取地址運(yùn)算符*:指針運(yùn)算符(或稱(chēng)“間接訪問(wèn)”運(yùn)算符)注意:“*”號(hào)在定義指針變量時(shí),表示所定義的變量為指針類(lèi)型;在引用時(shí),“*”號(hào)表示指針變量所指向的變量。由于指針變量存放的是數(shù)據(jù)在內(nèi)存中的地址,因此指針變量可以參與的數(shù)學(xué)運(yùn)算很少,僅限于地址的前后遷移運(yùn)算,即指針變量與整數(shù)的加減、自增、自減運(yùn)算。其中加法和自增運(yùn)算代表指針向前移,減法和自減運(yùn)算代表指針向后移。目錄23指針變量的定義5指針變量的作函數(shù)參數(shù)指針變量的引用1指針變量的初始化4指針變量的運(yùn)算5指針變量作函數(shù)參數(shù)指針變量作函數(shù)參數(shù)在C語(yǔ)言中,指針變量可以作為函數(shù)的參數(shù)使用,將一個(gè)變量的地址傳遞到另一個(gè)函數(shù)中。例6-5定義兩個(gè)單精度實(shí)數(shù),并將它們的值進(jìn)行交換(要求在例6-3的基礎(chǔ)上,以函數(shù)實(shí)現(xiàn)交換)編程分析:(1)數(shù)據(jù)結(jié)構(gòu)類(lèi)型題目要求形式語(yǔ)言(C)的表達(dá)定義數(shù)據(jù)(main)兩個(gè)單精度實(shí)型變量a和b2個(gè)實(shí)型(float)變量:a,b定義數(shù)據(jù)(main)指針變量pa和pb分別指向?qū)嵭妥兞縜和b2個(gè)實(shí)型(float)指針變量:pa,pbpa←&apb←&b臨時(shí)數(shù)據(jù)(swap)1個(gè)實(shí)型(float)變量:temp用于交換時(shí)候存放待交換變量的值指針變量作函數(shù)參數(shù)例6-5定義兩個(gè)單精度實(shí)數(shù),并將它們的值進(jìn)行交換(要求在例6-3的基礎(chǔ)上,以函數(shù)實(shí)現(xiàn)交換)編程分析:(2)算法算法流程形式語(yǔ)言的表達(dá)從鍵盤(pán)讀入a、b的值(main)以scanf函數(shù)從鍵盤(pán)讀入2個(gè)實(shí)數(shù),并分別存放在a和b中交換a與b的數(shù)值(swap)編寫(xiě)函數(shù)swap完成a與b的數(shù)值交換,其中函數(shù)的形參為指針類(lèi)型voidswap(float*px,float*py)在main函數(shù)中調(diào)用swap函數(shù)swap(pa,pb)輸出a和b的值,驗(yàn)證交換結(jié)果(main)以printf函數(shù)輸出a和b交換后的值指針變量作函數(shù)參數(shù)例6-5定義兩個(gè)單精度實(shí)數(shù),并將它們的值進(jìn)行交換(要求在例6-3的基礎(chǔ)上,以函數(shù)實(shí)現(xiàn)交換)編程分析:(2)算法交換前變量a和b的值調(diào)用函數(shù)swap將實(shí)參值傳遞給形參交換后變量a和b的值45ba&apa&bpb45b*pya*px&apa&bpb&apx&bpy54b*pya*px&apa&bpb&apx&bpy指針變量作函數(shù)參數(shù)例6-7趣味程序(移動(dòng)的笑臉——連續(xù)移動(dòng)):在方框內(nèi)通過(guò)上、下、左、右鍵連續(xù)移動(dòng)笑臉,按ESC鍵可以退出程序。算法分析:在例5-2中,已經(jīng)實(shí)現(xiàn)了在方框范圍內(nèi)單步移動(dòng)笑臉的項(xiàng)目編寫(xiě)。本例以例5-2為基礎(chǔ),編寫(xiě)連續(xù)移動(dòng)函數(shù)(smilemv),在連續(xù)移動(dòng)函數(shù)中嵌套調(diào)用單步移動(dòng)函數(shù)(onestepsmilemv)實(shí)現(xiàn)連續(xù)移動(dòng)。(1)修改單步移動(dòng)函數(shù)onestepsmilemv在嵌套調(diào)用過(guò)程中,笑臉在每次單步移動(dòng)后都需要將光標(biāo)位置傳遞回調(diào)用函數(shù)(即連續(xù)移動(dòng)函數(shù)smilemv),所以單步移動(dòng)函數(shù)(onestepsmilemv)需要以COORD類(lèi)型的指針變量pos為形參。指針變量作函數(shù)參數(shù)例6-7趣味程序(移動(dòng)的笑臉——連續(xù)移動(dòng)):在方框內(nèi)通過(guò)上、下、左、右鍵連續(xù)移動(dòng)笑臉,按ESC鍵可以退出程序。算法分析:(

溫馨提示

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

評(píng)論

0/150

提交評(píng)論