




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第13章指針與數組何光宇2011補充知識點:字符串連接符\\——放在行末,將多行字符串連接成一個目錄——指針與數組指針算術運算指針用于數組處理用數組名作為指針指針和多維數組應用復習:p指向cp指向cp是指針變量p中存儲了c的地址pca程序內存分配含義p可以指向a[1]嗎?a[1]p指向a[1]pca程序內存分配a[1]可指向a[5]嗎?p指向a[5]數組中元素數目可能非常多。指向數組的任一元素都要依靠取地址來實現(xiàn)嗎?也可通過指針前后移動來實現(xiàn)指針往后移動:指針與整數相加例:p+1,指針往后挪動一個元素(表明:指針指向數組下一元素)指針往前移動指針與整數相減例:p-1,指針往前挪動一個單位(表明:指針指向數組上一元素)例1:p指向a[5]通過取地址實現(xiàn)通過前后移動實現(xiàn)指向a[1]再后移4個元素指針前后移動:指針算術運算指針后移:與整數相加p+n;p+n指向?指針前移:與整數相減p-n;p-n指向?指針可以做乘法和除法嗎?不可以。做乘法和除法沒有明確的物理含義。指針還可以做哪些算術運算呢?指針相減:指針算術運算指針相減:p2–p1求p2與p1之間相隔了多少個元素如果p2在p1后面,p2–p1值是正還是負?值為正例2:p2-p1值是?小結——算術運算三種形式與整數相加p+n指針后移n個元素與整數相減(指針前移)p-n指針后移n個元素指針相減(指針間距離)p2-p1指針間相隔多少個元素1針對數組2單位為元素個數例3:程序輸出結果是?例4程序輸出是?這樣寫可以嗎?p++;p--;p+=n;p-=n;p=p+1;p=p–1;p=p+n;p=p-n;除算術運算外,還可通過比較運算判斷前后關系>,>=p2>p1
若成立,表明p2指向元素的地址位于p1指向元素后面<,<===,!=判斷兩個指針是否指向同一位置例5:什么含義?是否有錯?錯誤:若文件未打開,指針為空,也會調用fclose函數正確寫法異常情況與正常情況混在一起,可讀性不好建議寫法例6:思考若指針指向的是變量,而不是數組元素,可以對其進行前后移動的操作嗎?語法上可以但運行時會導致未可知的結果目錄——指針與數組指針算術運算指針用于數組處理用數組名作為指針指針和多維數組應用例1:程序輸出是?p?
指向a的首元素p+i?*(p+i)?
程序輸出是?由于可通過指針移動指向數組任意元素,因此,也可通過指針對數組元素進行處理例2:程序輸出是?*p++相當于:*(p++)即:*pp++與(*p)++區(qū)別即:*p(*p)++運算符結合次序:自右向左例3:程序對錯辨析1程序是否有錯?2如果沒錯,程序運行結果?目錄——指針與數組指針算術運算指針用于數組處理用數組名作為指針指針和多維數組應用數組名是數組首元素地址數組名可以看作是指針數組名與常用指針區(qū)別(1)數組名是常量不可以給a2賦值,以上程序將不能通過編譯。數組名與常用指針區(qū)別(2)sizeof結果不一樣sizeof(a),求得的是為數組a分配的存儲空間sizeof(p),求得的是為變量p分配的存儲空間目錄——指針與數組指針算術運算指針用于數組處理用數組名作為指針指針和多維數組應用注意:
aa[i]代表了什么?詳解:理解aa[i]aa[i],實質:
長為4的數組有4個元素每個元素都是整數aa[i]為這個數組首元素的地址&aa[i][0]aa?詳解:理解&p0p0是指針變量指向整數aa[0][0]&p0是指針變量的地址若將&p0記錄在變量pp中,則:需通過兩次間接尋址才能找到原始變量aa[0][0]
先找到pp
通過pp找到p0通過p0找到aa[0][0]詳解:理解int**pppp是一個指向指針變量的指針通過兩次間接訪問才能找到原始變量aa[0][0]稱pp為二維指針用兩個星號作為標記兩個星號,表明二維指針表明需要進行二次間接尋址詳解:理解intaa[3][4]aa是一個長為3的數組aa有三個元素每個元素又都是一個數組aa[0],aa[1],aa[2]aa[0]:指針詳解:理解int(*pp)[4]
根據結合律,pp是一個指針這個指針指向什么呢?將*pp用變量a代替,得到?inta[4]pp指向一個長為4的整數數組aa正是長為3的數組的首元素的地址。首元素是長為4的整數數組
可以將aa賦給pp詳解:理解int*pp[3]根據結合律(次序:從右到左),pp是一個數組pp的長度為3pp[i]:存儲整數變量的地址aa[i],代表整數變量aa[i][0]的地址可將aa[i]賦給pp[i]總結名稱例子含義二維數組intaa[3][4]
一個數組,其每一個元素又是一個數組二維指針int**pp
一個指針,指向另一個整型指針數組指針int(*p)[4]一個指針,指向長為4的數組指針數組int*p[3]
一個數組,其每一個元素又都是一個整型指針例1:理解intaaa[3][4][5]aaa長為3的數組每個元素都是一個數組(二維)aaa[i]長為4的數組每個元素都是一個數組(一維)aaa[i][j]長為5的數組每個元素都是一個整數目錄——指針與數組指針算術運算指針用于數組處理用數組名作為指針指針和多維數組應用數組作為函數參數經常需要將數組作為函數參數例:求整個數組中最大元素對數組進行排序例1:求整個數組最大元素詳解1:數組名作為參數a是指針,因此對應參數p也定義為指針不建議寫成:int
findMax(intp[],intlen)這樣定義的p依然是指針詳解2:指針的算術運算p是指針,p[k]即相當于*(p+k)詳解3:數組長度的處理數組長度可以不傳過來嗎?這樣呢?也不可以p是指針,不是數組。因而sizeof(p)的值為4.有變通方法嗎?有可以在數組中加入特殊元素從數組首元素,依次往后進行處理當碰到特殊元素時,即表明數組元素全部處理完畢對字符數組,為不將數組長度作為參數,一般使用
‘\0’作為特殊元素以‘\0’結束的字符數組,稱為字符串例2:快速排序算法對長為n的字符數組a,用如下算法進行排序:1將a[0]插入數組中適當位置k,使得:其ASCII代碼值大于所有排在其前的字符,而小于所有排在其后的字符2遞歸對子數組a[0]~a[k-1]進行排序3遞歸對子數組a[k-1]~a[n-1]進行排序子任務:將a[0]插入數組中適當位置k
任務:將數組首字符排到數組中適當位置,使得其ASCII代碼值大于所有排在其前的字符,而小于所有排在其后的字符算法?算法交換找到比a[0]大的數初始狀態(tài)找到比a[0]小的數交換重復以上過程即可技能:好程序是如何寫出來的遵循測試驅動的開發(fā)方法先寫測試,再寫程序不斷改進程序,使測試通過示例V-0.1V-0.2小結1——算術運算與邏輯運算與整數相加p+n指針后移n個元素與整數相減(指針前移)p-n指針后移n個元素指針相減(指針間距離)p2-p1指針間相隔多少個元素1針對數組2單位為元素個數比較地址前后可用:<,<=,>,>=,==,!=小結2:多維數組與多維指針名稱例子含義二維數組intaa[3][4]
一個數組,其每一個元素又是一個數組二維指針int**pp
一個指針,指向另一個整型指針數組指針int(*p)[4]一個指針,指向長為4的數組指針數組
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年提前解除房屋租賃合同協(xié)議樣本
- 北京二手房交易合同范本
- 汽車維修技術診斷與故障排除技能題目及答案
- 食品衛(wèi)生與質量控制測試卷
- 心理學情緒管理與人際交往能力培養(yǎng)題
- 食品衛(wèi)生安全法規(guī)考試卷及答案
- 汽車行業(yè)新能源汽車技術研發(fā)與推廣方案
- 任務四項目3《制作創(chuàng)意作品》教學設計2023-2024學年湘人版初中勞動技術七年級下冊
- 2025年安全生產標準化建設安全生產培訓考試題庫
- 2025年成人高考《語文》模擬沖刺題庫:文學常識與作家作品實戰(zhàn)演練
- 全球衛(wèi)生合作國際援助與醫(yī)療外交的重要性培訓課件
- 醫(yī)院“無陪護”病房試點工作方案
- JGJT411-2017 沖擊回波法檢測混凝土缺陷技術規(guī)程
- 2023研發(fā)費用加計扣除課件
- 2022年全國小學生天文知識競賽考試題庫(含答案)
- 【課件】探究影響感應電流方向的因素(課件)
- 《紅軍長征與遵義會議》開辟新的發(fā)展道路課件
- 汽車坡道玻璃雨棚施工方案
- 貴州省師范大學貴安新區(qū)附屬初級中學八年級下學期期中考試語文卷(含解析)
- 2023年專升本語文作文范文(26篇)
- 年產10噸功能益生菌凍干粉的工廠設計改
評論
0/150
提交評論