




已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
高級語言程序設計,第7章 內(nèi)存單元的地址 指針程序設計(2),二維數(shù)組批量數(shù)據(jù)處理的指針版,問題描述: 假設有全班60個人3門課程數(shù)學、英語、計算機的成績數(shù)據(jù),包括學號,試按每個人的總分對其降序排序。,分析,設已經(jīng)定義了數(shù)組 int num M, grade M N, totalM=0; 要通過input函數(shù)獲得用戶鍵盤輸入的數(shù)據(jù) 然后用chooseSort函數(shù)排序, 再用print函數(shù)打印輸出排序的結果,期望使用三個函數(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ù)組的元素 實現(xiàn)讀寫數(shù)據(jù),指針與二維數(shù)組的關系 二維數(shù)組名與行列地址,注意關于二維數(shù)組下面的事實,用指針訪問二維數(shù)組元素的第一種方法,由前面分析的結果可以看出,直接把二維數(shù)組名作為行地址的行地址進行行列偏移既可以訪問二維數(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ù)組,對于二維數(shù)組gradeMN, 定義 int *p = *grade; 則 p就是第一列的地址(第一個元素的地址)(第一行的首地址,見前面的圖,也就是第一列的地址),p指向了二維數(shù)組的第一個元素 第i行第j列的元素為 *(p+i*N+j) 或者寫成下標的形式, 注意是單下標 pi*N+j,函數(shù)調(diào)用為:input(num, *grade, total);,指針的指針,二維數(shù)組名和行指針是一類特殊的指針,它指向的元素是行地址。 還有多級指針,最典型的就是二級指針 int a = 10; int *aPtr= 其中*aPPtr就定義了一個二重指針,思考:可以用二重指針指向一個二維數(shù)組嗎?,例如 int *p, a23=1,2,3,4,5,6; p=a;,應該用行指針?;蛘呷缦露x的若干個指針構成的指針數(shù)組,思考:注意指針數(shù)組和行指針的不同,指向函數(shù)的指針,函數(shù)與數(shù)據(jù)一樣,也要存儲在內(nèi)存中,因此也有首地址。這個首地址就是函數(shù)的第一條語句(或指令)在內(nèi)存中的地址,通常稱這個地址為函數(shù)的入口地址。 怎么定義指向函數(shù)的指針變量呢?它的格式與普通的指針變量略有不同,形式如下: 數(shù)據(jù)類型 (*指針變量名) (形參參數(shù)列表),例如,int max(int a, int b); int min(int a, int b); 假設它們對應的代碼已經(jīng)放在內(nèi)存的某個位置,定義一個可以指向這類函數(shù)的指針變量 定義 int (* ifuncPtr) ( int,int); 則 ifuncPtr = max; ifuncPtr就指向了max。 同樣可以讓ifuncPtr指向min。,間接引用函數(shù),int a,b; scanf(“%d %d”,指向函數(shù)的指針作為函數(shù)的參數(shù),排序算法中,升序和降序的區(qū)別僅僅在于排序過程中關系表達式是大于還是小于,除此之外都是一樣的。 可以用一個指向大于比較或小于比較的函數(shù)指針使排序算法函數(shù)成為升序降序通用的函數(shù) 升降的區(qū)別就在于比較的時候用大于還是小于,可以定義兩個函數(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; ,再定義一個交換函數(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年住宅新風系統(tǒng)安裝合同
- 餐飲服務提供商供貨合同2025年
- 2025年企業(yè)租賃合同法律效力評估
- 出租車購銷合同甲方協(xié)議書
- 2025年保險賠款權益轉讓協(xié)議正式文本
- 雙方DV、DC租賃合同標準文本
- 2025年公積金二手房貸款交易合同指南
- 2025年華宇快遞運輸合同范例
- 2025年農(nóng)業(yè)綜合開發(fā)項目合同
- 2025年住宅交易裝修設計合同示例
- 發(fā)展?jié)h語 初級讀寫一 第二課 謝謝你
- 部編版六年級語文下冊第一單元大單元教學任務單
- 人教版小學語文1-6年級背誦內(nèi)容完整版
- 2023徐金桂“徐徐道來”(行政法知識點)版
- 《事故汽車常用零部件修復與更換判別規(guī)范》
- 2024-2030年中國酒類流通行業(yè)發(fā)展動態(tài)及投資盈利預測研究報告
- 物業(yè)管理如何實現(xiàn)降本增效
- DL-T825-2021電能計量裝置安裝接線規(guī)則
- 信息科技重大版 七年級下冊 互聯(lián)網(wǎng)應用與創(chuàng)新 第一單元單元教學設計 互聯(lián)網(wǎng)創(chuàng)新應用
- 2024年興業(yè)銀行股份有限公司校園招聘考試試題及參考答案
- 2024智慧城市城市交通基礎設施智能監(jiān)測技術要求
評論
0/150
提交評論