已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
高級(jí)語言程序設(shè)計(jì),第7章 內(nèi)存單元的地址 指針程序設(shè)計(jì)(2),二維數(shù)組批量數(shù)據(jù)處理的指針版,問題描述: 假設(shè)有全班60個(gè)人3門課程數(shù)學(xué)、英語、計(jì)算機(jī)的成績(jī)數(shù)據(jù),包括學(xué)號(hào),試按每個(gè)人的總分對(duì)其降序排序。,分析,設(shè)已經(jīng)定義了數(shù)組 int num M, grade M N, totalM=0; 要通過input函數(shù)獲得用戶鍵盤輸入的數(shù)據(jù) 然后用chooseSort函數(shù)排序, 再用print函數(shù)打印輸出排序的結(jié)果,期望使用三個(gè)函數(shù), 其原型為,void input (int num, int grade 3,int total ); void chooseSort (int num , int grade 3, int total ); void print (const int num , const int grade 3, const int total );,或者,void input (int *num, ?int *grade, int *total); void chooseSort (int *num, ?int *grade, int *total); void print (const int *num, ?const int *grade; const int *total); 其中指向二維數(shù)組grade的指針如何定義和表示還不明確,然后,通過指針訪問一維數(shù)組或二維數(shù)組的元素 實(shí)現(xiàn)讀寫數(shù)據(jù),指針與二維數(shù)組的關(guān)系 二維數(shù)組名與行列地址,注意關(guān)于二維數(shù)組下面的事實(shí),用指針訪問二維數(shù)組元素的第一種方法,由前面分析的結(jié)果可以看出,直接把二維數(shù)組名作為行地址的行地址進(jìn)行行列偏移既可以訪問二維數(shù)組的元素 即 *(*(a+i)+j),如果定義成指針參數(shù)該是什么樣的指針呢?,void input(int *pNum, int *pGrade, int *pTotal); int *pGrade說明的pGrade能指向二維數(shù)組grade嗎? 回答是不能! 指針的類型必須與它所指向的變量類型相同 pGrade是什么類型? 二維數(shù)組名grade是什么含義?,用指針訪問二維數(shù)組元素的第二種方法行指針,指向行地址的指針-行指針, int (*pGrade)3 = grade; pGrade是行指針,是有3列的行指針 這樣 pGrade+1 就是grade +1 pGrade+2 就是grade + 2 ,函數(shù)調(diào)用可以寫成 : input ( num, grade, total);,注意這里的*grade在前面是*pGrade,用指針訪問二維數(shù)組元素的第三種方法-把二維數(shù)組看成一維數(shù)組,對(duì)于二維數(shù)組gradeMN, 定義 int *p = *grade; 則 p就是第一列的地址(第一個(gè)元素的地址)(第一行的首地址,見前面的圖,也就是第一列的地址),p指向了二維數(shù)組的第一個(gè)元素 第i行第j列的元素為 *(p+i*N+j) 或者寫成下標(biāo)的形式, 注意是單下標(biāo) pi*N+j,函數(shù)調(diào)用為:input(num, *grade, total);,指針的指針,二維數(shù)組名和行指針是一類特殊的指針,它指向的元素是行地址。 還有多級(jí)指針,最典型的就是二級(jí)指針 int a = 10; int *aPtr= 其中*aPPtr就定義了一個(gè)二重指針,思考:可以用二重指針指向一個(gè)二維數(shù)組嗎?,例如 int *p, a23=1,2,3,4,5,6; p=a;,應(yīng)該用行指針?;蛘呷缦露x的若干個(gè)指針構(gòu)成的指針數(shù)組,思考:注意指針數(shù)組和行指針的不同,指向函數(shù)的指針,函數(shù)與數(shù)據(jù)一樣,也要存儲(chǔ)在內(nèi)存中,因此也有首地址。這個(gè)首地址就是函數(shù)的第一條語句(或指令)在內(nèi)存中的地址,通常稱這個(gè)地址為函數(shù)的入口地址。 怎么定義指向函數(shù)的指針變量呢?它的格式與普通的指針變量略有不同,形式如下: 數(shù)據(jù)類型 (*指針變量名) (形參參數(shù)列表),例如,int max(int a, int b); int min(int a, int b); 假設(shè)它們對(duì)應(yīng)的代碼已經(jīng)放在內(nèi)存的某個(gè)位置,定義一個(gè)可以指向這類函數(shù)的指針變量 定義 int (* ifuncPtr) ( int,int); 則 ifuncPtr = max; ifuncPtr就指向了max。 同樣可以讓ifuncPtr指向min。,間接引用函數(shù),int a,b; scanf(“%d %d”,指向函數(shù)的指針作為函數(shù)的參數(shù),排序算法中,升序和降序的區(qū)別僅僅在于排序過程中關(guān)系表達(dá)式是大于還是小于,除此之外都是一樣的。 可以用一個(gè)指向大于比較或小于比較的函數(shù)指針使排序算法函數(shù)成為升序降序通用的函數(shù) 升降的區(qū)別就在于比較的時(shí)候用大于還是小于,可以定義兩個(gè)函數(shù),int ascending(const int a, const int b); int descending(const int a, const int b); 即 int ascending(const int a, const int b) return ba; ,再定義一個(gè)交換函數(shù),void swap(int *x, int *y); 即 void swap(int *x, int *y) int temp; temp = *x; *x = *y; *y = temp; ,選擇法升序降序通用函數(shù),void chooseSort(int num,int grade3,int total, int(*compare)(int,int) ) in
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度夫妻協(xié)議離婚范本:離婚后雙方財(cái)產(chǎn)分割與子女贍養(yǎng)合同
- 2025個(gè)人蝦池承包土地使用及租賃合同樣本4篇
- 2025年度礦產(chǎn)資源開采土地承包合同解除與環(huán)保協(xié)議
- 二零二五版養(yǎng)老產(chǎn)業(yè)派遣護(hù)理人員服務(wù)合同規(guī)范4篇
- 2025年度美甲美睫店員工正式聘用合同范本(員工福利待遇升級(jí))
- 二零二五年度平面模特形象使用權(quán)授權(quán)合同范本
- 二零二五年度坡屋面小青瓦施工節(jié)能減排技術(shù)合同4篇
- 二零二五年度無人機(jī)銷售安裝及培訓(xùn)合同范本3篇
- 二零二五年度新能源電站運(yùn)維人員派遣合同范本
- 課題申報(bào)參考:明清近代詩文與江南文脈研究
- 高考滿分作文常見結(jié)構(gòu)完全解讀
- 專題2-2十三種高考補(bǔ)充函數(shù)歸類(講練)
- 理光投影機(jī)pj k360功能介紹
- 六年級(jí)數(shù)學(xué)上冊(cè)100道口算題(全冊(cè)完整版)
- 八年級(jí)數(shù)學(xué)下冊(cè)《第十九章 一次函數(shù)》單元檢測(cè)卷帶答案-人教版
- 帕薩特B5維修手冊(cè)及帕薩特B5全車電路圖
- 系統(tǒng)解剖學(xué)考試重點(diǎn)筆記
- 小學(xué)五年級(jí)解方程應(yīng)用題6
- 云南省地圖含市縣地圖矢量分層地圖行政區(qū)劃市縣概況ppt模板
- 年月江西省南昌市某綜合樓工程造價(jià)指標(biāo)及
- 作物栽培學(xué)課件棉花
評(píng)論
0/150
提交評(píng)論